﻿2026-06-23T09:38:02.7725997Z ##[group]Run ./traceable-reqs check --json
2026-06-23T09:38:02.7726369Z [36;1m./traceable-reqs check --json[0m
2026-06-23T09:38:02.7738781Z shell: /usr/bin/bash -e {0}
2026-06-23T09:38:02.7739124Z ##[endgroup]
2026-06-23T09:38:02.8376722Z {
2026-06-23T09:38:02.8377334Z   "schemaVersion": 1,
2026-06-23T09:38:02.8378014Z   "summary": {
2026-06-23T09:38:02.8378422Z     "requirementCount": 293,
2026-06-23T09:38:02.8379455Z     "completeCount": 293,
2026-06-23T09:38:02.8379893Z     "incompleteCount": 0,
2026-06-23T09:38:02.8380320Z     "findingCount": 0
2026-06-23T09:38:02.8380702Z   },
2026-06-23T09:38:02.8381059Z   "requirements": [
2026-06-23T09:38:02.8381445Z     {
2026-06-23T09:38:02.8381865Z       "id": "REQ-ADAPTER-GH-TRANSPORT",
2026-06-23T09:38:02.8384990Z       "title": "The `gh_release` avenue (and `spt adapter add --release`) gain a fetch `transport`: `https` (current reqwest direct, public), `gh` (shell the pre-authorized `gh` CLI — the private-repo path; `gh` honors OAuth and `GH_TOKEN`, so spt custodies no token), or `auto` (default: prefer `gh` when installed+authed, else HTTPS). `--gh`/`--https` force it on `add`. Additive over the existing fetch path; verify->extract->register downstream is unchanged. (v0.13.2)",
2026-06-23T09:38:02.8387520Z       "requiredStages": [
2026-06-23T09:38:02.8388137Z         "doc",
2026-06-23T09:38:02.8388584Z         "impl",
2026-06-23T09:38:02.8389205Z         "unit"
2026-06-23T09:38:02.8389686Z       ],
2026-06-23T09:38:02.8390149Z       "stages": {
2026-06-23T09:38:02.8390596Z         "doc": {
2026-06-23T09:38:02.8391099Z           "complete": true,
2026-06-23T09:38:02.8413440Z           "evidence": [
2026-06-23T09:38:02.8413865Z             {
2026-06-23T09:38:02.8414245Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.8414696Z               "line": 97
2026-06-23T09:38:02.8415106Z             },
2026-06-23T09:38:02.8415478Z             {
2026-06-23T09:38:02.8415884Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:02.8416364Z               "line": 316
2026-06-23T09:38:02.8416795Z             }
2026-06-23T09:38:02.8417165Z           ]
2026-06-23T09:38:02.8417514Z         },
2026-06-23T09:38:02.8417871Z         "impl": {
2026-06-23T09:38:02.8418257Z           "complete": true,
2026-06-23T09:38:02.8418677Z           "evidence": [
2026-06-23T09:38:02.8419200Z             {
2026-06-23T09:38:02.8419665Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.8420222Z               "line": 506
2026-06-23T09:38:02.8420619Z             },
2026-06-23T09:38:02.8420977Z             {
2026-06-23T09:38:02.8421410Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.8421935Z               "line": 533
2026-06-23T09:38:02.8422338Z             },
2026-06-23T09:38:02.8422704Z             {
2026-06-23T09:38:02.8423103Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8423614Z               "line": 2905
2026-06-23T09:38:02.8424024Z             },
2026-06-23T09:38:02.8424391Z             {
2026-06-23T09:38:02.8424772Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8425270Z               "line": 2927
2026-06-23T09:38:02.8425723Z             },
2026-06-23T09:38:02.8426129Z             {
2026-06-23T09:38:02.8426567Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8427035Z               "line": 2943
2026-06-23T09:38:02.8427403Z             },
2026-06-23T09:38:02.8427725Z             {
2026-06-23T09:38:02.8428078Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8428526Z               "line": 2955
2026-06-23T09:38:02.8428883Z             },
2026-06-23T09:38:02.8429300Z             {
2026-06-23T09:38:02.8429647Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8430092Z               "line": 2984
2026-06-23T09:38:02.8430444Z             },
2026-06-23T09:38:02.8430773Z             {
2026-06-23T09:38:02.8431116Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8431551Z               "line": 3218
2026-06-23T09:38:02.8431923Z             },
2026-06-23T09:38:02.8432590Z             {
2026-06-23T09:38:02.8432949Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8433397Z               "line": 6097
2026-06-23T09:38:02.8433765Z             },
2026-06-23T09:38:02.8434084Z             {
2026-06-23T09:38:02.8434452Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8435039Z               "line": 6550
2026-06-23T09:38:02.8435437Z             },
2026-06-23T09:38:02.8435769Z             {
2026-06-23T09:38:02.8436112Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8436559Z               "line": 6671
2026-06-23T09:38:02.8436898Z             },
2026-06-23T09:38:02.8437189Z             {
2026-06-23T09:38:02.8437518Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8437925Z               "line": 6732
2026-06-23T09:38:02.8438266Z             },
2026-06-23T09:38:02.8438562Z             {
2026-06-23T09:38:02.8438896Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8439391Z               "line": 6758
2026-06-23T09:38:02.8439687Z             }
2026-06-23T09:38:02.8439893Z           ]
2026-06-23T09:38:02.8440184Z         },
2026-06-23T09:38:02.8440458Z         "int": {
2026-06-23T09:38:02.8440713Z           "complete": false,
2026-06-23T09:38:02.8440976Z           "evidence": []
2026-06-23T09:38:02.8441271Z         },
2026-06-23T09:38:02.8441496Z         "unit": {
2026-06-23T09:38:02.8441715Z           "complete": true,
2026-06-23T09:38:02.8441967Z           "evidence": [
2026-06-23T09:38:02.8442230Z             {
2026-06-23T09:38:02.8442469Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8442741Z               "line": 8401
2026-06-23T09:38:02.8442979Z             },
2026-06-23T09:38:02.8443178Z             {
2026-06-23T09:38:02.8443467Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8443753Z               "line": 8419
2026-06-23T09:38:02.8443991Z             },
2026-06-23T09:38:02.8444205Z             {
2026-06-23T09:38:02.8444449Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8444725Z               "line": 8590
2026-06-23T09:38:02.8444960Z             },
2026-06-23T09:38:02.8445164Z             {
2026-06-23T09:38:02.8445411Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8445694Z               "line": 8606
2026-06-23T09:38:02.8445921Z             },
2026-06-23T09:38:02.8446114Z             {
2026-06-23T09:38:02.8446329Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8446592Z               "line": 8633
2026-06-23T09:38:02.8446815Z             },
2026-06-23T09:38:02.8447006Z             {
2026-06-23T09:38:02.8447216Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8447482Z               "line": 8660
2026-06-23T09:38:02.8447697Z             }
2026-06-23T09:38:02.8447894Z           ]
2026-06-23T09:38:02.8448088Z         }
2026-06-23T09:38:02.8448288Z       }
2026-06-23T09:38:02.8448480Z     },
2026-06-23T09:38:02.8448683Z     {
2026-06-23T09:38:02.8448899Z       "id": "REQ-ADAPTER-LIVE-UPDATE",
2026-06-23T09:38:02.8452290Z       "title": "An adapter update is live and daemon-coordinated (the adapter analog of brain self-update, ADR-0004): for an endpoint with a running RESIDENT adapter binary (today the `[message-idle-translation-binary]`), the CLI keeps fetch+verify and hands the APPLY to the daemon over IPC, which per affected endpoint (1) STOPS the resident binary -> releases the OS file lock (fixes the Windows 'Access denied (os error 5)' overwrite failure), (2) swaps on disk ONLY files whose CRC differs from the staged archive (unchanged files + their still-running binaries untouched), (3) RE-CLONES the new on-disk manifest into the running `BrainLifecycle` (the in-memory manifest is cached at bringup and otherwise goes stale -> binaries+manifest back on the same page), (4) RESTARTS the resident binary from the new files. An endpoint NOT running -> CLI swaps directly (no lock, no cache). Only the resident class is cycled; ephemeral adapter binaries (Psyche loop, `[digest]` extractor, `[session.*]` runners, hooks) self-heal on next spawn and are excluded. The daemon keeps a per-endpoint registry of resident adapter children. (ADR-0025, v0.13.2)",
2026-06-23T09:38:02.8455619Z       "requiredStages": [
2026-06-23T09:38:02.8455863Z         "doc",
2026-06-23T09:38:02.8456076Z         "impl",
2026-06-23T09:38:02.8456296Z         "unit",
2026-06-23T09:38:02.8456631Z         "int"
2026-06-23T09:38:02.8456831Z       ],
2026-06-23T09:38:02.8457045Z       "stages": {
2026-06-23T09:38:02.8457266Z         "doc": {
2026-06-23T09:38:02.8457495Z           "complete": true,
2026-06-23T09:38:02.8457733Z           "evidence": [
2026-06-23T09:38:02.8457961Z             {
2026-06-23T09:38:02.8458290Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-06-23T09:38:02.8458648Z               "line": 3
2026-06-23T09:38:02.8458871Z             },
2026-06-23T09:38:02.8459182Z             {
2026-06-23T09:38:02.8459487Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-06-23T09:38:02.8459844Z               "line": 44
2026-06-23T09:38:02.8460060Z             }
2026-06-23T09:38:02.8460259Z           ]
2026-06-23T09:38:02.8460440Z         },
2026-06-23T09:38:02.8460636Z         "impl": {
2026-06-23T09:38:02.8460859Z           "complete": true,
2026-06-23T09:38:02.8461092Z           "evidence": [
2026-06-23T09:38:02.8461314Z             {
2026-06-23T09:38:02.8461559Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.8461852Z               "line": 982
2026-06-23T09:38:02.8462077Z             },
2026-06-23T09:38:02.8462283Z             {
2026-06-23T09:38:02.8462520Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8462806Z               "line": 1044
2026-06-23T09:38:02.8463040Z             },
2026-06-23T09:38:02.8463255Z             {
2026-06-23T09:38:02.8463503Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8463794Z               "line": 1088
2026-06-23T09:38:02.8464017Z             },
2026-06-23T09:38:02.8464224Z             {
2026-06-23T09:38:02.8464573Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8464916Z               "line": 1210
2026-06-23T09:38:02.8465250Z             },
2026-06-23T09:38:02.8465550Z             {
2026-06-23T09:38:02.8465917Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8466370Z               "line": 1346
2026-06-23T09:38:02.8466724Z             },
2026-06-23T09:38:02.8467031Z             {
2026-06-23T09:38:02.8467396Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8467826Z               "line": 1359
2026-06-23T09:38:02.8468159Z             },
2026-06-23T09:38:02.8468455Z             {
2026-06-23T09:38:02.8468818Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8469329Z               "line": 1457
2026-06-23T09:38:02.8469658Z             },
2026-06-23T09:38:02.8469951Z             {
2026-06-23T09:38:02.8470328Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8470761Z               "line": 2313
2026-06-23T09:38:02.8471095Z             },
2026-06-23T09:38:02.8471387Z             {
2026-06-23T09:38:02.8471758Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T09:38:02.8472196Z               "line": 37
2026-06-23T09:38:02.8472528Z             },
2026-06-23T09:38:02.8472828Z             {
2026-06-23T09:38:02.8473219Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T09:38:02.8473652Z               "line": 93
2026-06-23T09:38:02.8473991Z             },
2026-06-23T09:38:02.8474296Z             {
2026-06-23T09:38:02.8474664Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8475111Z               "line": 75
2026-06-23T09:38:02.8475457Z             },
2026-06-23T09:38:02.8475743Z             {
2026-06-23T09:38:02.8476125Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8476572Z               "line": 101
2026-06-23T09:38:02.8477087Z             },
2026-06-23T09:38:02.8477392Z             {
2026-06-23T09:38:02.8477771Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8478214Z               "line": 127
2026-06-23T09:38:02.8478558Z             },
2026-06-23T09:38:02.8478863Z             {
2026-06-23T09:38:02.8479315Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8479907Z               "line": 224
2026-06-23T09:38:02.8480250Z             },
2026-06-23T09:38:02.8480564Z             {
2026-06-23T09:38:02.8480946Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8481394Z               "line": 232
2026-06-23T09:38:02.8481737Z             },
2026-06-23T09:38:02.8482033Z             {
2026-06-23T09:38:02.8482424Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8482883Z               "line": 251
2026-06-23T09:38:02.8483225Z             },
2026-06-23T09:38:02.8483536Z             {
2026-06-23T09:38:02.8483926Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8484371Z               "line": 326
2026-06-23T09:38:02.8484724Z             },
2026-06-23T09:38:02.8485025Z             {
2026-06-23T09:38:02.8485395Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.8485835Z               "line": 233
2026-06-23T09:38:02.8486197Z             },
2026-06-23T09:38:02.8486507Z             {
2026-06-23T09:38:02.8486880Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.8487313Z               "line": 239
2026-06-23T09:38:02.8487656Z             },
2026-06-23T09:38:02.8487962Z             {
2026-06-23T09:38:02.8488326Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.8488750Z               "line": 259
2026-06-23T09:38:02.8489138Z             },
2026-06-23T09:38:02.8489433Z             {
2026-06-23T09:38:02.8489777Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8490214Z               "line": 6403
2026-06-23T09:38:02.8490571Z             },
2026-06-23T09:38:02.8490866Z             {
2026-06-23T09:38:02.8491200Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8491624Z               "line": 6428
2026-06-23T09:38:02.8491959Z             },
2026-06-23T09:38:02.8492258Z             {
2026-06-23T09:38:02.8492598Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8493046Z               "line": 6457
2026-06-23T09:38:02.8493306Z             }
2026-06-23T09:38:02.8493509Z           ]
2026-06-23T09:38:02.8493706Z         },
2026-06-23T09:38:02.8493915Z         "int": {
2026-06-23T09:38:02.8494235Z           "complete": true,
2026-06-23T09:38:02.8494607Z           "evidence": [
2026-06-23T09:38:02.8494945Z             {
2026-06-23T09:38:02.8495369Z               "path": "crates/spt/tests/live_adapt_psyche_lock_e2e.rs",
2026-06-23T09:38:02.8495866Z               "line": 338
2026-06-23T09:38:02.8496207Z             },
2026-06-23T09:38:02.8521776Z             {
2026-06-23T09:38:02.8522309Z               "path": "crates/spt/tests/live_adapt_psyche_lock_e2e.rs",
2026-06-23T09:38:02.8522825Z               "line": 351
2026-06-23T09:38:02.8523182Z             },
2026-06-23T09:38:02.8523477Z             {
2026-06-23T09:38:02.8523925Z               "path": "crates/spt/tests/live_adapt_translation_swap_e2e.rs",
2026-06-23T09:38:02.8524416Z               "line": 96
2026-06-23T09:38:02.8524759Z             }
2026-06-23T09:38:02.8525043Z           ]
2026-06-23T09:38:02.8525333Z         },
2026-06-23T09:38:02.8525634Z         "unit": {
2026-06-23T09:38:02.8525972Z           "complete": true,
2026-06-23T09:38:02.8526325Z           "evidence": [
2026-06-23T09:38:02.8526644Z             {
2026-06-23T09:38:02.8527011Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8527445Z               "line": 3136
2026-06-23T09:38:02.8527782Z             },
2026-06-23T09:38:02.8528070Z             {
2026-06-23T09:38:02.8528433Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8529168Z               "line": 3169
2026-06-23T09:38:02.8529502Z             },
2026-06-23T09:38:02.8529793Z             {
2026-06-23T09:38:02.8530170Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.8530599Z               "line": 3193
2026-06-23T09:38:02.8530938Z             },
2026-06-23T09:38:02.8531243Z             {
2026-06-23T09:38:02.8531778Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T09:38:02.8532240Z               "line": 222
2026-06-23T09:38:02.8532574Z             },
2026-06-23T09:38:02.8532879Z             {
2026-06-23T09:38:02.8533230Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T09:38:02.8533670Z               "line": 253
2026-06-23T09:38:02.8533990Z             },
2026-06-23T09:38:02.8534290Z             {
2026-06-23T09:38:02.8534661Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T09:38:02.8535100Z               "line": 276
2026-06-23T09:38:02.8535419Z             },
2026-06-23T09:38:02.8535712Z             {
2026-06-23T09:38:02.8536083Z               "path": "crates/spt-daemon/src/crc_swap.rs",
2026-06-23T09:38:02.8536519Z               "line": 331
2026-06-23T09:38:02.8536857Z             },
2026-06-23T09:38:02.8537148Z             {
2026-06-23T09:38:02.8537515Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8537977Z               "line": 1360
2026-06-23T09:38:02.8538304Z             },
2026-06-23T09:38:02.8538607Z             {
2026-06-23T09:38:02.8539037Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8539490Z               "line": 1399
2026-06-23T09:38:02.8539828Z             },
2026-06-23T09:38:02.8540119Z             {
2026-06-23T09:38:02.8540495Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8540957Z               "line": 1445
2026-06-23T09:38:02.8541313Z             },
2026-06-23T09:38:02.8541623Z             {
2026-06-23T09:38:02.8542009Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8542329Z               "line": 1479
2026-06-23T09:38:02.8542553Z             },
2026-06-23T09:38:02.8542757Z             {
2026-06-23T09:38:02.8543010Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.8543306Z               "line": 1531
2026-06-23T09:38:02.8543531Z             },
2026-06-23T09:38:02.8543738Z             {
2026-06-23T09:38:02.8543973Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8544254Z               "line": 12773
2026-06-23T09:38:02.8544478Z             },
2026-06-23T09:38:02.8544678Z             {
2026-06-23T09:38:02.8544907Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8545184Z               "line": 12855
2026-06-23T09:38:02.8545398Z             },
2026-06-23T09:38:02.8545597Z             {
2026-06-23T09:38:02.8545814Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8546074Z               "line": 12887
2026-06-23T09:38:02.8546301Z             }
2026-06-23T09:38:02.8546487Z           ]
2026-06-23T09:38:02.8546682Z         }
2026-06-23T09:38:02.8546878Z       }
2026-06-23T09:38:02.8547074Z     },
2026-06-23T09:38:02.8547254Z     {
2026-06-23T09:38:02.8547526Z       "id": "REQ-ADAPTER-MULTIPLATFORM-SPT",
2026-06-23T09:38:02.8550707Z       "title": "A `.spt` adapter archive may pack multiple platforms in one signed asset: shared `manifest.toml` + `strings/` at the root, role binaries under per-Rust-target-triple subdirectories (ADR-0016 triple vocabulary, e.g. `x86_64-pc-windows-msvc/`); install/update extracts the shared root plus ONLY `current_platform()`'s triple subdir, flattened into `install_dir` so flat `<install_dir>/<program>` resolution (REQ-INSTALL-11) is unchanged. Name stays `adapter.spt` (plain-tar or gzip, `--asset` optional default); one whole-archive Ed25519 signature over the fat archive (REQ-UPD-9 single-artifact verify). A legacy flat archive (no triple subdirs) extracts as today (free back-compat); a multi-platform archive sets `min_spt_core_version >= 0.13.2` (forward-compat gate, readable before extract); a multi-platform archive missing the recipient's triple -> typed `NoArtifactForPlatform`, never a silent no-op. Large adapters may still split per-platform (single-triple archives via `--asset`, or ADR-0016 update-set machinery). (ADR-0024, v0.13.2)",
2026-06-23T09:38:02.8553819Z       "requiredStages": [
2026-06-23T09:38:02.8554162Z         "doc",
2026-06-23T09:38:02.8554379Z         "impl",
2026-06-23T09:38:02.8554585Z         "unit",
2026-06-23T09:38:02.8554786Z         "int"
2026-06-23T09:38:02.8554980Z       ],
2026-06-23T09:38:02.8555186Z       "stages": {
2026-06-23T09:38:02.8555401Z         "doc": {
2026-06-23T09:38:02.8555614Z           "complete": true,
2026-06-23T09:38:02.8555849Z           "evidence": [
2026-06-23T09:38:02.8556073Z             {
2026-06-23T09:38:02.8556374Z               "path": "docs/adr/0024-multi-platform-adapter-spt-packaging.md",
2026-06-23T09:38:02.8556729Z               "line": 3
2026-06-23T09:38:02.8556947Z             }
2026-06-23T09:38:02.8557151Z           ]
2026-06-23T09:38:02.8557357Z         },
2026-06-23T09:38:02.8557556Z         "impl": {
2026-06-23T09:38:02.8557781Z           "complete": true,
2026-06-23T09:38:02.8558019Z           "evidence": [
2026-06-23T09:38:02.8558230Z             {
2026-06-23T09:38:02.8558486Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:02.8558791Z               "line": 189
2026-06-23T09:38:02.8559111Z             },
2026-06-23T09:38:02.8559321Z             {
2026-06-23T09:38:02.8559544Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8559814Z               "line": 3061
2026-06-23T09:38:02.8560047Z             },
2026-06-23T09:38:02.8560252Z             {
2026-06-23T09:38:02.8560487Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8560753Z               "line": 3151
2026-06-23T09:38:02.8560977Z             }
2026-06-23T09:38:02.8561174Z           ]
2026-06-23T09:38:02.8561368Z         },
2026-06-23T09:38:02.8561572Z         "int": {
2026-06-23T09:38:02.8561789Z           "complete": true,
2026-06-23T09:38:02.8562029Z           "evidence": [
2026-06-23T09:38:02.8562247Z             {
2026-06-23T09:38:02.8562476Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8562744Z               "line": 12608
2026-06-23T09:38:02.8562962Z             },
2026-06-23T09:38:02.8563168Z             {
2026-06-23T09:38:02.8563383Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8563663Z               "line": 12672
2026-06-23T09:38:02.8563877Z             },
2026-06-23T09:38:02.8564078Z             {
2026-06-23T09:38:02.8564298Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8564564Z               "line": 12715
2026-06-23T09:38:02.8564778Z             }
2026-06-23T09:38:02.8564974Z           ]
2026-06-23T09:38:02.8565169Z         },
2026-06-23T09:38:02.8565374Z         "unit": {
2026-06-23T09:38:02.8565594Z           "complete": true,
2026-06-23T09:38:02.8565826Z           "evidence": [
2026-06-23T09:38:02.8566037Z             {
2026-06-23T09:38:02.8581505Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8581917Z               "line": 12543
2026-06-23T09:38:02.8582207Z             },
2026-06-23T09:38:02.8582469Z             {
2026-06-23T09:38:02.8582765Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8583135Z               "line": 12560
2026-06-23T09:38:02.8583410Z             }
2026-06-23T09:38:02.8583654Z           ]
2026-06-23T09:38:02.8583878Z         }
2026-06-23T09:38:02.8584120Z       }
2026-06-23T09:38:02.8584349Z     },
2026-06-23T09:38:02.8584578Z     {
2026-06-23T09:38:02.8584888Z       "id": "REQ-ADAPTER-PROOF-DIR-OVERRIDE",
2026-06-23T09:38:02.8586928Z       "title": "The author-time proof commands (`spt adapter digest-proof`, `spt adapter translate-proof`) gain a `--dir <path>` / `--manifest <file>` override so an author proofs a DEV binary against an on-disk manifest+install dir WITHOUT staging a full extracted GhReleaseManaged install (mirrors digest-proof's `--sample` pointing straight at a file). Fixes perri F-011: a bare-file-added gh_release adapter currently can't be resolved by the *-proof commands ('manifest is not present yet at <dir>'); un-stales the bare-file digest-proof int. (perri F-011, v0.13.x DX)",
2026-06-23T09:38:02.8588699Z       "requiredStages": [
2026-06-23T09:38:02.8589118Z         "doc",
2026-06-23T09:38:02.8589343Z         "impl",
2026-06-23T09:38:02.8589552Z         "unit",
2026-06-23T09:38:02.8589752Z         "int"
2026-06-23T09:38:02.8589949Z       ],
2026-06-23T09:38:02.8590143Z       "stages": {
2026-06-23T09:38:02.8590353Z         "doc": {
2026-06-23T09:38:02.8590569Z           "complete": true,
2026-06-23T09:38:02.8590811Z           "evidence": [
2026-06-23T09:38:02.8591025Z             {
2026-06-23T09:38:02.8591295Z               "path": "docs-site/src/harness-contract/patterns.md",
2026-06-23T09:38:02.8591609Z               "line": 338
2026-06-23T09:38:02.8591823Z             },
2026-06-23T09:38:02.8592028Z             {
2026-06-23T09:38:02.8592253Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:02.8592515Z               "line": 189
2026-06-23T09:38:02.8592729Z             }
2026-06-23T09:38:02.8592929Z           ]
2026-06-23T09:38:02.8593126Z         },
2026-06-23T09:38:02.8593330Z         "impl": {
2026-06-23T09:38:02.8593545Z           "complete": true,
2026-06-23T09:38:02.8593786Z           "evidence": [
2026-06-23T09:38:02.8593998Z             {
2026-06-23T09:38:02.8594228Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8594504Z               "line": 6317
2026-06-23T09:38:02.8594729Z             },
2026-06-23T09:38:02.8594923Z             {
2026-06-23T09:38:02.8595143Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8595416Z               "line": 6329
2026-06-23T09:38:02.8595644Z             },
2026-06-23T09:38:02.8595844Z             {
2026-06-23T09:38:02.8596060Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8596336Z               "line": 6805
2026-06-23T09:38:02.8596558Z             }
2026-06-23T09:38:02.8596755Z           ]
2026-06-23T09:38:02.8596954Z         },
2026-06-23T09:38:02.8597154Z         "int": {
2026-06-23T09:38:02.8597369Z           "complete": true,
2026-06-23T09:38:02.8597598Z           "evidence": [
2026-06-23T09:38:02.8597817Z             {
2026-06-23T09:38:02.8598084Z               "path": "crates/spt/tests/translate_proof.rs",
2026-06-23T09:38:02.8598379Z               "line": 156
2026-06-23T09:38:02.8598601Z             }
2026-06-23T09:38:02.8598817Z           ]
2026-06-23T09:38:02.8599078Z         },
2026-06-23T09:38:02.8599278Z         "unit": {
2026-06-23T09:38:02.8599497Z           "complete": true,
2026-06-23T09:38:02.8599735Z           "evidence": [
2026-06-23T09:38:02.8599955Z             {
2026-06-23T09:38:02.8600180Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8600456Z               "line": 8495
2026-06-23T09:38:02.8600679Z             }
2026-06-23T09:38:02.8600894Z           ]
2026-06-23T09:38:02.8601090Z         }
2026-06-23T09:38:02.8601275Z       }
2026-06-23T09:38:02.8601463Z     },
2026-06-23T09:38:02.8601660Z     {
2026-06-23T09:38:02.8601878Z       "id": "REQ-ADAPTER-TRANSLATE-PROOF",
2026-06-23T09:38:02.8609263Z       "title": "`spt adapter translate-proof <adapter> --event <envelope> [--session <id>]` — the author-time EMIT-half proof tool for `[message-idle-translation-binary]` (ADR-0022), symmetric to `spt adapter digest-proof` (REQ-TERM-5). It spawns and feeds the adapter's declared translation binary EXACTLY as the daemon does at idle-delivery — running the REAL `spt_daemon::translation` driver VERBATIM (no protocol reimplementation): `TranslationChild::spawn` the binary, send the `{type:\"init\",endpoint_id,node}` line then the `{type:\"event\",envelope}` line, and read back the emitted `{key}`/`{text}`/`{delay_ms}`/`{commit}` keystroke-command stream — then prints it author-readable (each Key with its `key_to_bytes` rendering, Text quoted, Delay in ms, Commit marker) with counts. It fills the SAME `{id}`→option and `{session_id}`→(--session, else a placeholder) keys into the `--event` envelope the daemon fills at runtime, so an envelope that proofs here feeds faithfully live. EMIT-half ONLY: it proves the binary's spawn+feed+emit contract; it does NOT exercise the daemon's atomic PTY apply / controller-buffering (that stays covered by the W2 inject_control_wedge int gate) — `--help` says so. Exit codes mirror digest-proof: 0 ok, 1 on spawn-fail / zero commands / no-commit-or-output / unparseable, 2 when the adapter declares no `[message-idle-translation-binary]` section. The `TranslationChild` Drop does the bounded no-zombie reap. (v0.13.x)",
2026-06-23T09:38:02.8613487Z       "requiredStages": [
2026-06-23T09:38:02.8613716Z         "doc",
2026-06-23T09:38:02.8613917Z         "impl",
2026-06-23T09:38:02.8614126Z         "unit",
2026-06-23T09:38:02.8614331Z         "int"
2026-06-23T09:38:02.8614527Z       ],
2026-06-23T09:38:02.8614726Z       "stages": {
2026-06-23T09:38:02.8614945Z         "doc": {
2026-06-23T09:38:02.8615152Z           "complete": true,
2026-06-23T09:38:02.8615391Z           "evidence": [
2026-06-23T09:38:02.8615606Z             {
2026-06-23T09:38:02.8615930Z               "path": "docs/adr/0022-spt-hosted-idle-delivery-translation-binary.md",
2026-06-23T09:38:02.8616292Z               "line": 73
2026-06-23T09:38:02.8616522Z             }
2026-06-23T09:38:02.8616721Z           ]
2026-06-23T09:38:02.8616917Z         },
2026-06-23T09:38:02.8617118Z         "impl": {
2026-06-23T09:38:02.8617341Z           "complete": true,
2026-06-23T09:38:02.8617579Z           "evidence": [
2026-06-23T09:38:02.8617793Z             {
2026-06-23T09:38:02.8618017Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8618293Z               "line": 6328
2026-06-23T09:38:02.8618513Z             },
2026-06-23T09:38:02.8618709Z             {
2026-06-23T09:38:02.8619024Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8619280Z               "line": 6973
2026-06-23T09:38:02.8619504Z             }
2026-06-23T09:38:02.8619697Z           ]
2026-06-23T09:38:02.8619895Z         },
2026-06-23T09:38:02.8620090Z         "int": {
2026-06-23T09:38:02.8620298Z           "complete": true,
2026-06-23T09:38:02.8620531Z           "evidence": [
2026-06-23T09:38:02.8620741Z             {
2026-06-23T09:38:02.8620995Z               "path": "crates/spt/tests/translate_proof.rs",
2026-06-23T09:38:02.8621300Z               "line": 45
2026-06-23T09:38:02.8621513Z             }
2026-06-23T09:38:02.8621709Z           ]
2026-06-23T09:38:02.8621901Z         },
2026-06-23T09:38:02.8622105Z         "unit": {
2026-06-23T09:38:02.8622320Z           "complete": true,
2026-06-23T09:38:02.8622554Z           "evidence": [
2026-06-23T09:38:02.8622781Z             {
2026-06-23T09:38:02.8623008Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8623280Z               "line": 10008
2026-06-23T09:38:02.8623499Z             },
2026-06-23T09:38:02.8623694Z             {
2026-06-23T09:38:02.8623918Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8624177Z               "line": 10080
2026-06-23T09:38:02.8624400Z             }
2026-06-23T09:38:02.8624600Z           ]
2026-06-23T09:38:02.8624802Z         }
2026-06-23T09:38:02.8624996Z       }
2026-06-23T09:38:02.8625187Z     },
2026-06-23T09:38:02.8625376Z     {
2026-06-23T09:38:02.8625613Z       "id": "REQ-ADAPTER-UPDATE-MESSAGE",
2026-06-23T09:38:02.8627315Z       "title": "An adapter manifest may declare `[update].message` — a plain (multi-line) human notice surfaced to stdout, markdown-rendered (the v0.13.0 helpfmt prose path), ONLY when `spt adapter update` actually APPLIES an update (version changed), not on a no-op. Read from the newly-installed manifest; avenue-agnostic (gh_release/delegated/file_pull). No `{key}` substitution. Use: an adapter telling the operator a post-update action, e.g. spt-claude-code's \"run `/reload-plugins` in any ongoing sessions\". (v0.13.2)",
2026-06-23T09:38:02.8628863Z       "requiredStages": [
2026-06-23T09:38:02.8629154Z         "doc",
2026-06-23T09:38:02.8629355Z         "impl",
2026-06-23T09:38:02.8629560Z         "unit"
2026-06-23T09:38:02.8629755Z       ],
2026-06-23T09:38:02.8629956Z       "stages": {
2026-06-23T09:38:02.8630165Z         "doc": {
2026-06-23T09:38:02.8630380Z           "complete": true,
2026-06-23T09:38:02.8630729Z           "evidence": [
2026-06-23T09:38:02.8630949Z             {
2026-06-23T09:38:02.8631168Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.8631415Z               "line": 99
2026-06-23T09:38:02.8631635Z             },
2026-06-23T09:38:02.8631832Z             {
2026-06-23T09:38:02.8632040Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.8632293Z               "line": 528
2026-06-23T09:38:02.8632509Z             },
2026-06-23T09:38:02.8632712Z             {
2026-06-23T09:38:02.8632970Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-23T09:38:02.8633275Z               "line": 391
2026-06-23T09:38:02.8633508Z             },
2026-06-23T09:38:02.8633705Z             {
2026-06-23T09:38:02.8633930Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:02.8634188Z               "line": 319
2026-06-23T09:38:02.8634408Z             }
2026-06-23T09:38:02.8634611Z           ]
2026-06-23T09:38:02.8634803Z         },
2026-06-23T09:38:02.8634993Z         "impl": {
2026-06-23T09:38:02.8635227Z           "complete": true,
2026-06-23T09:38:02.8635475Z           "evidence": [
2026-06-23T09:38:02.8635681Z             {
2026-06-23T09:38:02.8635936Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.8648087Z               "line": 497
2026-06-23T09:38:02.8648344Z             },
2026-06-23T09:38:02.8648559Z             {
2026-06-23T09:38:02.8648784Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8649133Z               "line": 6501
2026-06-23T09:38:02.8649354Z             },
2026-06-23T09:38:02.8649551Z             {
2026-06-23T09:38:02.8649769Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8650055Z               "line": 6650
2026-06-23T09:38:02.8650274Z             }
2026-06-23T09:38:02.8650470Z           ]
2026-06-23T09:38:02.8650660Z         },
2026-06-23T09:38:02.8650847Z         "int": {
2026-06-23T09:38:02.8651058Z           "complete": false,
2026-06-23T09:38:02.8651295Z           "evidence": []
2026-06-23T09:38:02.8651514Z         },
2026-06-23T09:38:02.8651714Z         "unit": {
2026-06-23T09:38:02.8651930Z           "complete": true,
2026-06-23T09:38:02.8652164Z           "evidence": [
2026-06-23T09:38:02.8652380Z             {
2026-06-23T09:38:02.8652608Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8652869Z               "line": 8462
2026-06-23T09:38:02.8653080Z             },
2026-06-23T09:38:02.8653276Z             {
2026-06-23T09:38:02.8653495Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8653752Z               "line": 8477
2026-06-23T09:38:02.8653963Z             }
2026-06-23T09:38:02.8654152Z           ]
2026-06-23T09:38:02.8654339Z         }
2026-06-23T09:38:02.8654528Z       }
2026-06-23T09:38:02.8654717Z     },
2026-06-23T09:38:02.8654903Z     {
2026-06-23T09:38:02.8655112Z       "id": "REQ-ADAPTER-VERSION-CMD",
2026-06-23T09:38:02.8656915Z       "title": "`spt adapter version <name>` prints a registered adapter's declared version — the EXISTING mandatory `[adapter].version` manifest field (manifest.rs already requires it; NOT a `[strings].version`, NOT `get-string`, no second version source). A new `AdapterCmd::Version{option}` resolves the option's merged view via `registry::resolve_option` like the sibling adapter subcommands and prints `manifest.adapter.version`; an unresolvable option errors (exit 1) the same way. (v0.13.2 W6)",
2026-06-23T09:38:02.8658337Z       "requiredStages": [
2026-06-23T09:38:02.8658566Z         "doc",
2026-06-23T09:38:02.8658800Z         "impl",
2026-06-23T09:38:02.8659082Z         "unit"
2026-06-23T09:38:02.8659277Z       ],
2026-06-23T09:38:02.8659467Z       "stages": {
2026-06-23T09:38:02.8659833Z         "doc": {
2026-06-23T09:38:02.8660044Z           "complete": true,
2026-06-23T09:38:02.8660272Z           "evidence": [
2026-06-23T09:38:02.8660491Z             {
2026-06-23T09:38:02.8660702Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:02.8660969Z               "line": 35
2026-06-23T09:38:02.8661182Z             }
2026-06-23T09:38:02.8661478Z           ]
2026-06-23T09:38:02.8661665Z         },
2026-06-23T09:38:02.8661865Z         "impl": {
2026-06-23T09:38:02.8662102Z           "complete": true,
2026-06-23T09:38:02.8662349Z           "evidence": [
2026-06-23T09:38:02.8662562Z             {
2026-06-23T09:38:02.8662777Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8663049Z               "line": 6293
2026-06-23T09:38:02.8663273Z             },
2026-06-23T09:38:02.8663458Z             {
2026-06-23T09:38:02.8663678Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8663950Z               "line": 6782
2026-06-23T09:38:02.8664175Z             }
2026-06-23T09:38:02.8664369Z           ]
2026-06-23T09:38:02.8664561Z         },
2026-06-23T09:38:02.8664757Z         "int": {
2026-06-23T09:38:02.8664970Z           "complete": false,
2026-06-23T09:38:02.8665211Z           "evidence": []
2026-06-23T09:38:02.8665425Z         },
2026-06-23T09:38:02.8665616Z         "unit": {
2026-06-23T09:38:02.8665840Z           "complete": true,
2026-06-23T09:38:02.8666079Z           "evidence": [
2026-06-23T09:38:02.8666301Z             {
2026-06-23T09:38:02.8666545Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8666827Z               "line": 8555
2026-06-23T09:38:02.8667047Z             },
2026-06-23T09:38:02.8667251Z             {
2026-06-23T09:38:02.8667475Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8667736Z               "line": 8566
2026-06-23T09:38:02.8667957Z             }
2026-06-23T09:38:02.8668154Z           ]
2026-06-23T09:38:02.8668350Z         }
2026-06-23T09:38:02.8668539Z       }
2026-06-23T09:38:02.8668735Z     },
2026-06-23T09:38:02.8668921Z     {
2026-06-23T09:38:02.8669202Z       "id": "REQ-API-1",
2026-06-23T09:38:02.8669522Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-23T09:38:02.8669866Z       "requiredStages": [
2026-06-23T09:38:02.8670094Z         "impl",
2026-06-23T09:38:02.8670291Z         "unit",
2026-06-23T09:38:02.8670498Z         "int"
2026-06-23T09:38:02.8670699Z       ],
2026-06-23T09:38:02.8670889Z       "stages": {
2026-06-23T09:38:02.8671094Z         "doc": {
2026-06-23T09:38:02.8671309Z           "complete": false,
2026-06-23T09:38:02.8671544Z           "evidence": []
2026-06-23T09:38:02.8671772Z         },
2026-06-23T09:38:02.8671986Z         "impl": {
2026-06-23T09:38:02.8672202Z           "complete": true,
2026-06-23T09:38:02.8672434Z           "evidence": [
2026-06-23T09:38:02.8672648Z             {
2026-06-23T09:38:02.8672904Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.8673185Z               "line": 15
2026-06-23T09:38:02.8673409Z             }
2026-06-23T09:38:02.8673599Z           ]
2026-06-23T09:38:02.8673791Z         },
2026-06-23T09:38:02.8673985Z         "int": {
2026-06-23T09:38:02.8674186Z           "complete": true,
2026-06-23T09:38:02.8674435Z           "evidence": [
2026-06-23T09:38:02.8674643Z             {
2026-06-23T09:38:02.8674886Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:02.8675187Z               "line": 13
2026-06-23T09:38:02.8675389Z             }
2026-06-23T09:38:02.8675591Z           ]
2026-06-23T09:38:02.8675776Z         },
2026-06-23T09:38:02.8675970Z         "unit": {
2026-06-23T09:38:02.8676190Z           "complete": true,
2026-06-23T09:38:02.8676433Z           "evidence": [
2026-06-23T09:38:02.8676634Z             {
2026-06-23T09:38:02.8676857Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.8677134Z               "line": 717
2026-06-23T09:38:02.8677359Z             },
2026-06-23T09:38:02.8677554Z             {
2026-06-23T09:38:02.8677903Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.8678177Z               "line": 804
2026-06-23T09:38:02.8678399Z             }
2026-06-23T09:38:02.8678594Z           ]
2026-06-23T09:38:02.8678789Z         }
2026-06-23T09:38:02.8679048Z       }
2026-06-23T09:38:02.8679248Z     },
2026-06-23T09:38:02.8679438Z     {
2026-06-23T09:38:02.8679753Z       "id": "REQ-API-2",
2026-06-23T09:38:02.8680101Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-23T09:38:02.8680479Z       "requiredStages": [
2026-06-23T09:38:02.8680697Z         "impl",
2026-06-23T09:38:02.8680893Z         "unit",
2026-06-23T09:38:02.8681092Z         "int"
2026-06-23T09:38:02.8681288Z       ],
2026-06-23T09:38:02.8681479Z       "stages": {
2026-06-23T09:38:02.8681683Z         "doc": {
2026-06-23T09:38:02.8681904Z           "complete": false,
2026-06-23T09:38:02.8682151Z           "evidence": []
2026-06-23T09:38:02.8682370Z         },
2026-06-23T09:38:02.8682571Z         "impl": {
2026-06-23T09:38:02.8682790Z           "complete": true,
2026-06-23T09:38:02.8683034Z           "evidence": [
2026-06-23T09:38:02.8683246Z             {
2026-06-23T09:38:02.8683488Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T09:38:02.8683779Z               "line": 17
2026-06-23T09:38:02.8683983Z             },
2026-06-23T09:38:02.8684187Z             {
2026-06-23T09:38:02.8684422Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:02.8684699Z               "line": 20
2026-06-23T09:38:02.8684908Z             },
2026-06-23T09:38:02.8685109Z             {
2026-06-23T09:38:02.8685343Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:02.8685625Z               "line": 142
2026-06-23T09:38:02.8685843Z             },
2026-06-23T09:38:02.8686033Z             {
2026-06-23T09:38:02.8686271Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8686549Z               "line": 24
2026-06-23T09:38:02.8686774Z             },
2026-06-23T09:38:02.8686974Z             {
2026-06-23T09:38:02.8687218Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8687494Z               "line": 41
2026-06-23T09:38:02.8687703Z             },
2026-06-23T09:38:02.8687904Z             {
2026-06-23T09:38:02.8688143Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8688424Z               "line": 213
2026-06-23T09:38:02.8688643Z             },
2026-06-23T09:38:02.8688847Z             {
2026-06-23T09:38:02.8689145Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8689426Z               "line": 255
2026-06-23T09:38:02.8689641Z             },
2026-06-23T09:38:02.8689846Z             {
2026-06-23T09:38:02.8690081Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8690361Z               "line": 334
2026-06-23T09:38:02.8690576Z             },
2026-06-23T09:38:02.8690781Z             {
2026-06-23T09:38:02.8691015Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8691301Z               "line": 397
2026-06-23T09:38:02.8691514Z             },
2026-06-23T09:38:02.8691709Z             {
2026-06-23T09:38:02.8691948Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8692228Z               "line": 436
2026-06-23T09:38:02.8692439Z             },
2026-06-23T09:38:02.8692640Z             {
2026-06-23T09:38:02.8692867Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.8693150Z               "line": 17
2026-06-23T09:38:02.8693374Z             },
2026-06-23T09:38:02.8693569Z             {
2026-06-23T09:38:02.8693802Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.8694062Z               "line": 30
2026-06-23T09:38:02.8694281Z             },
2026-06-23T09:38:02.8694706Z             {
2026-06-23T09:38:02.8695030Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.8695325Z               "line": 63
2026-06-23T09:38:02.8695550Z             },
2026-06-23T09:38:02.8695959Z             {
2026-06-23T09:38:02.8696232Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.8696519Z               "line": 77
2026-06-23T09:38:02.8696744Z             }
2026-06-23T09:38:02.8696938Z           ]
2026-06-23T09:38:02.8697134Z         },
2026-06-23T09:38:02.8697329Z         "int": {
2026-06-23T09:38:02.8697643Z           "complete": true,
2026-06-23T09:38:02.8697888Z           "evidence": [
2026-06-23T09:38:02.8698112Z             {
2026-06-23T09:38:02.8698364Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:02.8698641Z               "line": 14
2026-06-23T09:38:02.8698854Z             },
2026-06-23T09:38:02.8699221Z             {
2026-06-23T09:38:02.8699468Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:02.8699754Z               "line": 187
2026-06-23T09:38:02.8699972Z             }
2026-06-23T09:38:02.8700172Z           ]
2026-06-23T09:38:02.8700364Z         },
2026-06-23T09:38:02.8700567Z         "unit": {
2026-06-23T09:38:02.8700787Z           "complete": true,
2026-06-23T09:38:02.8701017Z           "evidence": [
2026-06-23T09:38:02.8701236Z             {
2026-06-23T09:38:02.8701484Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T09:38:02.8701765Z               "line": 82
2026-06-23T09:38:02.8701990Z             },
2026-06-23T09:38:02.8702202Z             {
2026-06-23T09:38:02.8702441Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:02.8702713Z               "line": 279
2026-06-23T09:38:02.8702928Z             },
2026-06-23T09:38:02.8703137Z             {
2026-06-23T09:38:02.8703376Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8703661Z               "line": 709
2026-06-23T09:38:02.8703882Z             },
2026-06-23T09:38:02.8704071Z             {
2026-06-23T09:38:02.8704310Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8704580Z               "line": 720
2026-06-23T09:38:02.8704794Z             },
2026-06-23T09:38:02.8704988Z             {
2026-06-23T09:38:02.8705222Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8705500Z               "line": 873
2026-06-23T09:38:02.8705713Z             },
2026-06-23T09:38:02.8705910Z             {
2026-06-23T09:38:02.8706148Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8706430Z               "line": 919
2026-06-23T09:38:02.8706658Z             },
2026-06-23T09:38:02.8706853Z             {
2026-06-23T09:38:02.8707083Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.8707367Z               "line": 143
2026-06-23T09:38:02.8707589Z             },
2026-06-23T09:38:02.8707780Z             {
2026-06-23T09:38:02.8708014Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.8708285Z               "line": 187
2026-06-23T09:38:02.8708495Z             }
2026-06-23T09:38:02.8708691Z           ]
2026-06-23T09:38:02.8708876Z         }
2026-06-23T09:38:02.8709138Z       }
2026-06-23T09:38:02.8709321Z     },
2026-06-23T09:38:02.8709511Z     {
2026-06-23T09:38:02.8709711Z       "id": "REQ-API-3",
2026-06-23T09:38:02.8710005Z       "title": "commune/signoff are file-drops, not commands",
2026-06-23T09:38:02.8710323Z       "requiredStages": [
2026-06-23T09:38:02.8710561Z         "impl",
2026-06-23T09:38:02.8710766Z         "unit",
2026-06-23T09:38:02.8710976Z         "int"
2026-06-23T09:38:02.8711181Z       ],
2026-06-23T09:38:02.8711376Z       "stages": {
2026-06-23T09:38:02.8711596Z         "doc": {
2026-06-23T09:38:02.8711811Z           "complete": false,
2026-06-23T09:38:02.8712048Z           "evidence": []
2026-06-23T09:38:02.8712254Z         },
2026-06-23T09:38:02.8712455Z         "impl": {
2026-06-23T09:38:02.8712677Z           "complete": true,
2026-06-23T09:38:02.8712912Z           "evidence": [
2026-06-23T09:38:02.8713116Z             {
2026-06-23T09:38:02.8713358Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:02.8713750Z               "line": 27
2026-06-23T09:38:02.8713959Z             },
2026-06-23T09:38:02.8714151Z             {
2026-06-23T09:38:02.8714395Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8714670Z               "line": 566
2026-06-23T09:38:02.8714893Z             }
2026-06-23T09:38:02.8715093Z           ]
2026-06-23T09:38:02.8715286Z         },
2026-06-23T09:38:02.8715572Z         "int": {
2026-06-23T09:38:02.8715792Z           "complete": true,
2026-06-23T09:38:02.8716012Z           "evidence": [
2026-06-23T09:38:02.8716230Z             {
2026-06-23T09:38:02.8716470Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:02.8716760Z               "line": 261
2026-06-23T09:38:02.8716985Z             }
2026-06-23T09:38:02.8717179Z           ]
2026-06-23T09:38:02.8717376Z         },
2026-06-23T09:38:02.8717567Z         "unit": {
2026-06-23T09:38:02.8717770Z           "complete": true,
2026-06-23T09:38:02.8717998Z           "evidence": [
2026-06-23T09:38:02.8718211Z             {
2026-06-23T09:38:02.8718434Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:02.8718717Z               "line": 280
2026-06-23T09:38:02.8719018Z             },
2026-06-23T09:38:02.8719208Z             {
2026-06-23T09:38:02.8719451Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.8719732Z               "line": 948
2026-06-23T09:38:02.8719956Z             }
2026-06-23T09:38:02.8720144Z           ]
2026-06-23T09:38:02.8720332Z         }
2026-06-23T09:38:02.8720518Z       }
2026-06-23T09:38:02.8720711Z     },
2026-06-23T09:38:02.8720898Z     {
2026-06-23T09:38:02.8721102Z       "id": "REQ-API-4",
2026-06-23T09:38:02.8722828Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-23T09:38:02.8724224Z       "requiredStages": [
2026-06-23T09:38:02.8724453Z         "doc",
2026-06-23T09:38:02.8724654Z         "impl",
2026-06-23T09:38:02.8724863Z         "unit"
2026-06-23T09:38:02.8725068Z       ],
2026-06-23T09:38:02.8725255Z       "stages": {
2026-06-23T09:38:02.8725449Z         "doc": {
2026-06-23T09:38:02.8725658Z           "complete": true,
2026-06-23T09:38:02.8725899Z           "evidence": [
2026-06-23T09:38:02.8781978Z             {
2026-06-23T09:38:02.8782349Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.8782654Z               "line": 158
2026-06-23T09:38:02.8782899Z             }
2026-06-23T09:38:02.8783102Z           ]
2026-06-23T09:38:02.8783298Z         },
2026-06-23T09:38:02.8783499Z         "impl": {
2026-06-23T09:38:02.8783717Z           "complete": true,
2026-06-23T09:38:02.8784005Z           "evidence": [
2026-06-23T09:38:02.8784225Z             {
2026-06-23T09:38:02.8784468Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.8784744Z               "line": 484
2026-06-23T09:38:02.8784968Z             }
2026-06-23T09:38:02.8785165Z           ]
2026-06-23T09:38:02.8785355Z         },
2026-06-23T09:38:02.8785545Z         "int": {
2026-06-23T09:38:02.8785766Z           "complete": false,
2026-06-23T09:38:02.8786008Z           "evidence": []
2026-06-23T09:38:02.8786227Z         },
2026-06-23T09:38:02.8786429Z         "unit": {
2026-06-23T09:38:02.8786645Z           "complete": true,
2026-06-23T09:38:02.8786879Z           "evidence": [
2026-06-23T09:38:02.8787090Z             {
2026-06-23T09:38:02.8787318Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.8787585Z               "line": 657
2026-06-23T09:38:02.8787800Z             },
2026-06-23T09:38:02.8787996Z             {
2026-06-23T09:38:02.8788229Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.8788791Z               "line": 681
2026-06-23T09:38:02.8789094Z             },
2026-06-23T09:38:02.8789298Z             {
2026-06-23T09:38:02.8789536Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.8789803Z               "line": 705
2026-06-23T09:38:02.8790023Z             }
2026-06-23T09:38:02.8790219Z           ]
2026-06-23T09:38:02.8790533Z         }
2026-06-23T09:38:02.8790738Z       }
2026-06-23T09:38:02.8790930Z     },
2026-06-23T09:38:02.8791110Z     {
2026-06-23T09:38:02.8791315Z       "id": "REQ-ARCH-1",
2026-06-23T09:38:02.8791588Z       "title": "Many small acyclically-layered crates",
2026-06-23T09:38:02.8791886Z       "requiredStages": [
2026-06-23T09:38:02.8792112Z         "impl"
2026-06-23T09:38:02.8792314Z       ],
2026-06-23T09:38:02.8792514Z       "stages": {
2026-06-23T09:38:02.8792723Z         "doc": {
2026-06-23T09:38:02.8792939Z           "complete": false,
2026-06-23T09:38:02.8793182Z           "evidence": []
2026-06-23T09:38:02.8793400Z         },
2026-06-23T09:38:02.8793590Z         "impl": {
2026-06-23T09:38:02.8793802Z           "complete": true,
2026-06-23T09:38:02.8794035Z           "evidence": [
2026-06-23T09:38:02.8794239Z             {
2026-06-23T09:38:02.8794477Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-23T09:38:02.8794747Z               "line": 18
2026-06-23T09:38:02.8794970Z             },
2026-06-23T09:38:02.8795172Z             {
2026-06-23T09:38:02.8795415Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-23T09:38:02.8795682Z               "line": 12
2026-06-23T09:38:02.8795900Z             },
2026-06-23T09:38:02.8796101Z             {
2026-06-23T09:38:02.8796331Z               "path": "crates/spt-store/src/lib.rs",
2026-06-23T09:38:02.8796607Z               "line": 12
2026-06-23T09:38:02.8796820Z             }
2026-06-23T09:38:02.8797013Z           ]
2026-06-23T09:38:02.8797210Z         },
2026-06-23T09:38:02.8797411Z         "int": {
2026-06-23T09:38:02.8797626Z           "complete": false,
2026-06-23T09:38:02.8797863Z           "evidence": []
2026-06-23T09:38:02.8798069Z         },
2026-06-23T09:38:02.8798270Z         "unit": {
2026-06-23T09:38:02.8798488Z           "complete": false,
2026-06-23T09:38:02.8798722Z           "evidence": []
2026-06-23T09:38:02.8799013Z         }
2026-06-23T09:38:02.8799210Z       }
2026-06-23T09:38:02.8799398Z     },
2026-06-23T09:38:02.8799593Z     {
2026-06-23T09:38:02.8799791Z       "id": "REQ-ARCH-2",
2026-06-23T09:38:02.8800116Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-23T09:38:02.8800459Z       "requiredStages": [
2026-06-23T09:38:02.8800683Z         "impl"
2026-06-23T09:38:02.8800879Z       ],
2026-06-23T09:38:02.8801074Z       "stages": {
2026-06-23T09:38:02.8801275Z         "doc": {
2026-06-23T09:38:02.8801485Z           "complete": false,
2026-06-23T09:38:02.8801723Z           "evidence": []
2026-06-23T09:38:02.8801932Z         },
2026-06-23T09:38:02.8802120Z         "impl": {
2026-06-23T09:38:02.8802341Z           "complete": true,
2026-06-23T09:38:02.8802582Z           "evidence": [
2026-06-23T09:38:02.8802793Z             {
2026-06-23T09:38:02.8803031Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-23T09:38:02.8803307Z               "line": 18
2026-06-23T09:38:02.8803527Z             }
2026-06-23T09:38:02.8803708Z           ]
2026-06-23T09:38:02.8803898Z         },
2026-06-23T09:38:02.8804090Z         "int": {
2026-06-23T09:38:02.8804310Z           "complete": false,
2026-06-23T09:38:02.8804537Z           "evidence": []
2026-06-23T09:38:02.8804748Z         },
2026-06-23T09:38:02.8804942Z         "unit": {
2026-06-23T09:38:02.8805154Z           "complete": false,
2026-06-23T09:38:02.8805384Z           "evidence": []
2026-06-23T09:38:02.8805593Z         }
2026-06-23T09:38:02.8805783Z       }
2026-06-23T09:38:02.8805975Z     },
2026-06-23T09:38:02.8806169Z     {
2026-06-23T09:38:02.8806374Z       "id": "REQ-ARCH-3",
2026-06-23T09:38:02.8806728Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-23T09:38:02.8807225Z       "requiredStages": [
2026-06-23T09:38:02.8807448Z         "impl",
2026-06-23T09:38:02.8807657Z         "unit"
2026-06-23T09:38:02.8807857Z       ],
2026-06-23T09:38:02.8808057Z       "stages": {
2026-06-23T09:38:02.8808305Z         "doc": {
2026-06-23T09:38:02.8808525Z           "complete": false,
2026-06-23T09:38:02.8808859Z           "evidence": []
2026-06-23T09:38:02.8809140Z         },
2026-06-23T09:38:02.8809325Z         "impl": {
2026-06-23T09:38:02.8809540Z           "complete": true,
2026-06-23T09:38:02.8809765Z           "evidence": [
2026-06-23T09:38:02.8809977Z             {
2026-06-23T09:38:02.8810223Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T09:38:02.8810520Z               "line": 34
2026-06-23T09:38:02.8810734Z             },
2026-06-23T09:38:02.8810929Z             {
2026-06-23T09:38:02.8811167Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T09:38:02.8811449Z               "line": 41
2026-06-23T09:38:02.8811663Z             }
2026-06-23T09:38:02.8811854Z           ]
2026-06-23T09:38:02.8812031Z         },
2026-06-23T09:38:02.8812230Z         "int": {
2026-06-23T09:38:02.8812449Z           "complete": false,
2026-06-23T09:38:02.8812680Z           "evidence": []
2026-06-23T09:38:02.8812892Z         },
2026-06-23T09:38:02.8813081Z         "unit": {
2026-06-23T09:38:02.8813305Z           "complete": true,
2026-06-23T09:38:02.8813528Z           "evidence": [
2026-06-23T09:38:02.8813744Z             {
2026-06-23T09:38:02.8813987Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T09:38:02.8814264Z               "line": 51
2026-06-23T09:38:02.8814477Z             },
2026-06-23T09:38:02.8814678Z             {
2026-06-23T09:38:02.8814908Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T09:38:02.8815185Z               "line": 71
2026-06-23T09:38:02.8815397Z             },
2026-06-23T09:38:02.8815602Z             {
2026-06-23T09:38:02.8815838Z               "path": "crates/spt-proto/src/version.rs",
2026-06-23T09:38:02.8816133Z               "line": 83
2026-06-23T09:38:02.8816348Z             }
2026-06-23T09:38:02.8816549Z           ]
2026-06-23T09:38:02.8816744Z         }
2026-06-23T09:38:02.8816934Z       }
2026-06-23T09:38:02.8817126Z     },
2026-06-23T09:38:02.8817316Z     {
2026-06-23T09:38:02.8817517Z       "id": "REQ-ARCH-4",
2026-06-23T09:38:02.8817856Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-23T09:38:02.8818217Z       "requiredStages": [
2026-06-23T09:38:02.8818456Z         "impl",
2026-06-23T09:38:02.8818659Z         "unit"
2026-06-23T09:38:02.8818861Z       ],
2026-06-23T09:38:02.8819127Z       "stages": {
2026-06-23T09:38:02.8819332Z         "doc": {
2026-06-23T09:38:02.8819560Z           "complete": false,
2026-06-23T09:38:02.8819794Z           "evidence": []
2026-06-23T09:38:02.8820015Z         },
2026-06-23T09:38:02.8820214Z         "impl": {
2026-06-23T09:38:02.8820424Z           "complete": true,
2026-06-23T09:38:02.8820666Z           "evidence": [
2026-06-23T09:38:02.8820873Z             {
2026-06-23T09:38:02.8821112Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8821389Z               "line": 165
2026-06-23T09:38:02.8821599Z             },
2026-06-23T09:38:02.8821794Z             {
2026-06-23T09:38:02.8822042Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8822314Z               "line": 188
2026-06-23T09:38:02.8822601Z             },
2026-06-23T09:38:02.8822911Z             {
2026-06-23T09:38:02.8823348Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8823727Z               "line": 208
2026-06-23T09:38:02.8824022Z             },
2026-06-23T09:38:02.8824365Z             {
2026-06-23T09:38:02.8824694Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8825095Z               "line": 223
2026-06-23T09:38:02.8825463Z             },
2026-06-23T09:38:02.8825735Z             {
2026-06-23T09:38:02.8826128Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8826612Z               "line": 273
2026-06-23T09:38:02.8826955Z             }
2026-06-23T09:38:02.8827265Z           ]
2026-06-23T09:38:02.8827548Z         },
2026-06-23T09:38:02.8827891Z         "int": {
2026-06-23T09:38:02.8828224Z           "complete": false,
2026-06-23T09:38:02.8828588Z           "evidence": []
2026-06-23T09:38:02.8829078Z         },
2026-06-23T09:38:02.8829382Z         "unit": {
2026-06-23T09:38:02.8829736Z           "complete": true,
2026-06-23T09:38:02.8830049Z           "evidence": [
2026-06-23T09:38:02.8830355Z             {
2026-06-23T09:38:02.8830731Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8831145Z               "line": 334
2026-06-23T09:38:02.8831486Z             },
2026-06-23T09:38:02.8831781Z             {
2026-06-23T09:38:02.8832101Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8832513Z               "line": 344
2026-06-23T09:38:02.8832818Z             },
2026-06-23T09:38:02.8833142Z             {
2026-06-23T09:38:02.8833523Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8833866Z               "line": 355
2026-06-23T09:38:02.8834220Z             },
2026-06-23T09:38:02.8834516Z             {
2026-06-23T09:38:02.8834859Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8835254Z               "line": 366
2026-06-23T09:38:02.8835550Z             },
2026-06-23T09:38:02.8835874Z             {
2026-06-23T09:38:02.8836246Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8836641Z               "line": 378
2026-06-23T09:38:02.8836968Z             },
2026-06-23T09:38:02.8837258Z             {
2026-06-23T09:38:02.8837636Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8837998Z               "line": 391
2026-06-23T09:38:02.8838280Z             },
2026-06-23T09:38:02.8838675Z             {
2026-06-23T09:38:02.8839076Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8839508Z               "line": 402
2026-06-23T09:38:02.8839818Z             },
2026-06-23T09:38:02.8840085Z             {
2026-06-23T09:38:02.8840477Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8840840Z               "line": 419
2026-06-23T09:38:02.8841178Z             },
2026-06-23T09:38:02.8841507Z             {
2026-06-23T09:38:02.8841834Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.8842247Z               "line": 547
2026-06-23T09:38:02.8842543Z             }
2026-06-23T09:38:02.8842858Z           ]
2026-06-23T09:38:02.8843153Z         }
2026-06-23T09:38:02.8843439Z       }
2026-06-23T09:38:02.8843764Z     },
2026-06-23T09:38:02.8844074Z     {
2026-06-23T09:38:02.8844394Z       "id": "REQ-CLI-1",
2026-06-23T09:38:02.8845786Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-23T09:38:02.8847096Z       "requiredStages": [
2026-06-23T09:38:02.8847451Z         "impl",
2026-06-23T09:38:02.8847752Z         "unit"
2026-06-23T09:38:02.8848109Z       ],
2026-06-23T09:38:02.8848409Z       "stages": {
2026-06-23T09:38:02.8848720Z         "doc": {
2026-06-23T09:38:02.8849141Z           "complete": false,
2026-06-23T09:38:02.8849484Z           "evidence": []
2026-06-23T09:38:02.8849766Z         },
2026-06-23T09:38:02.8850102Z         "impl": {
2026-06-23T09:38:02.8850417Z           "complete": true,
2026-06-23T09:38:02.8850808Z           "evidence": [
2026-06-23T09:38:02.8851132Z             {
2026-06-23T09:38:02.8851438Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8851856Z               "line": 225
2026-06-23T09:38:02.8852152Z             },
2026-06-23T09:38:02.8852592Z             {
2026-06-23T09:38:02.8852926Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8853289Z               "line": 1162
2026-06-23T09:38:02.8853666Z             },
2026-06-23T09:38:02.8853942Z             {
2026-06-23T09:38:02.8854296Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8854781Z               "line": 2069
2026-06-23T09:38:02.8855104Z             },
2026-06-23T09:38:02.8855440Z             {
2026-06-23T09:38:02.8855740Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8856180Z               "line": 3774
2026-06-23T09:38:02.8856495Z             }
2026-06-23T09:38:02.8856781Z           ]
2026-06-23T09:38:02.8857096Z         },
2026-06-23T09:38:02.8857391Z         "int": {
2026-06-23T09:38:02.8857680Z           "complete": false,
2026-06-23T09:38:02.8858055Z           "evidence": []
2026-06-23T09:38:02.8858370Z         },
2026-06-23T09:38:02.8858723Z         "unit": {
2026-06-23T09:38:02.8859142Z           "complete": true,
2026-06-23T09:38:02.8859466Z           "evidence": [
2026-06-23T09:38:02.8859819Z             {
2026-06-23T09:38:02.8860148Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8860528Z               "line": 9324
2026-06-23T09:38:02.8860862Z             }
2026-06-23T09:38:02.8861143Z           ]
2026-06-23T09:38:02.8861515Z         }
2026-06-23T09:38:02.8861801Z       }
2026-06-23T09:38:02.8862102Z     },
2026-06-23T09:38:02.8862411Z     {
2026-06-23T09:38:02.8862698Z       "id": "REQ-CLI-2",
2026-06-23T09:38:02.8863729Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-23T09:38:02.8864692Z       "requiredStages": [
2026-06-23T09:38:02.8865031Z         "impl",
2026-06-23T09:38:02.8865341Z         "unit"
2026-06-23T09:38:02.8865626Z       ],
2026-06-23T09:38:02.8865971Z       "stages": {
2026-06-23T09:38:02.8866258Z         "doc": {
2026-06-23T09:38:02.8866545Z           "complete": false,
2026-06-23T09:38:02.8866954Z           "evidence": []
2026-06-23T09:38:02.8867293Z         },
2026-06-23T09:38:02.8867622Z         "impl": {
2026-06-23T09:38:02.8867922Z           "complete": true,
2026-06-23T09:38:02.8868245Z           "evidence": [
2026-06-23T09:38:02.8868600Z             {
2026-06-23T09:38:02.8868930Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.8869431Z               "line": 414
2026-06-23T09:38:02.8869797Z             },
2026-06-23T09:38:02.8870117Z             {
2026-06-23T09:38:02.8870503Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T09:38:02.8870891Z               "line": 97
2026-06-23T09:38:02.8871218Z             },
2026-06-23T09:38:02.8871513Z             {
2026-06-23T09:38:02.8871858Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:02.8872262Z               "line": 256
2026-06-23T09:38:02.8872615Z             },
2026-06-23T09:38:02.8872924Z             {
2026-06-23T09:38:02.8873272Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8873622Z               "line": 439
2026-06-23T09:38:02.8873956Z             },
2026-06-23T09:38:02.8874252Z             {
2026-06-23T09:38:02.8874547Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8874971Z               "line": 1244
2026-06-23T09:38:02.8875310Z             },
2026-06-23T09:38:02.8875615Z             {
2026-06-23T09:38:02.8875940Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8876276Z               "line": 2312
2026-06-23T09:38:02.8876647Z             },
2026-06-23T09:38:02.8876927Z             {
2026-06-23T09:38:02.8883371Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8883734Z               "line": 2401
2026-06-23T09:38:02.8883965Z             },
2026-06-23T09:38:02.8884163Z             {
2026-06-23T09:38:02.8884398Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8884845Z               "line": 2462
2026-06-23T09:38:02.8885079Z             }
2026-06-23T09:38:02.8885275Z           ]
2026-06-23T09:38:02.8885470Z         },
2026-06-23T09:38:02.8885656Z         "int": {
2026-06-23T09:38:02.8885880Z           "complete": false,
2026-06-23T09:38:02.8886123Z           "evidence": []
2026-06-23T09:38:02.8886480Z         },
2026-06-23T09:38:02.8886681Z         "unit": {
2026-06-23T09:38:02.8886899Z           "complete": true,
2026-06-23T09:38:02.8887135Z           "evidence": [
2026-06-23T09:38:02.8887355Z             {
2026-06-23T09:38:02.8887608Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:02.8887894Z               "line": 338
2026-06-23T09:38:02.8888113Z             },
2026-06-23T09:38:02.8888308Z             {
2026-06-23T09:38:02.8888533Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8888805Z               "line": 9496
2026-06-23T09:38:02.8889139Z             }
2026-06-23T09:38:02.8889337Z           ]
2026-06-23T09:38:02.8889527Z         }
2026-06-23T09:38:02.8889711Z       }
2026-06-23T09:38:02.8889898Z     },
2026-06-23T09:38:02.8890093Z     {
2026-06-23T09:38:02.8890292Z       "id": "REQ-CLI-3",
2026-06-23T09:38:02.8891175Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-23T09:38:02.8892064Z       "requiredStages": [
2026-06-23T09:38:02.8892290Z         "impl",
2026-06-23T09:38:02.8892500Z         "unit"
2026-06-23T09:38:02.8892701Z       ],
2026-06-23T09:38:02.8892891Z       "stages": {
2026-06-23T09:38:02.8893092Z         "doc": {
2026-06-23T09:38:02.8893307Z           "complete": false,
2026-06-23T09:38:02.8893544Z           "evidence": []
2026-06-23T09:38:02.8893768Z         },
2026-06-23T09:38:02.8893955Z         "impl": {
2026-06-23T09:38:02.8894178Z           "complete": true,
2026-06-23T09:38:02.8894411Z           "evidence": [
2026-06-23T09:38:02.8894625Z             {
2026-06-23T09:38:02.8894842Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8895114Z               "line": 1156
2026-06-23T09:38:02.8895343Z             }
2026-06-23T09:38:02.8895540Z           ]
2026-06-23T09:38:02.8895743Z         },
2026-06-23T09:38:02.8895935Z         "int": {
2026-06-23T09:38:02.8896149Z           "complete": false,
2026-06-23T09:38:02.8896387Z           "evidence": []
2026-06-23T09:38:02.8896602Z         },
2026-06-23T09:38:02.8896784Z         "unit": {
2026-06-23T09:38:02.8897003Z           "complete": true,
2026-06-23T09:38:02.8897236Z           "evidence": [
2026-06-23T09:38:02.8897450Z             {
2026-06-23T09:38:02.8897680Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8897943Z               "line": 9289
2026-06-23T09:38:02.8898159Z             }
2026-06-23T09:38:02.8898353Z           ]
2026-06-23T09:38:02.8898545Z         }
2026-06-23T09:38:02.8898736Z       }
2026-06-23T09:38:02.8898911Z     },
2026-06-23T09:38:02.8899178Z     {
2026-06-23T09:38:02.8899384Z       "id": "REQ-CLI-4",
2026-06-23T09:38:02.8901793Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-23T09:38:02.8903741Z       "requiredStages": [],
2026-06-23T09:38:02.8904104Z       "stages": {
2026-06-23T09:38:02.8904314Z         "doc": {
2026-06-23T09:38:02.8904539Z           "complete": false,
2026-06-23T09:38:02.8904772Z           "evidence": []
2026-06-23T09:38:02.8904995Z         },
2026-06-23T09:38:02.8905195Z         "impl": {
2026-06-23T09:38:02.8905412Z           "complete": true,
2026-06-23T09:38:02.8905631Z           "evidence": [
2026-06-23T09:38:02.8905941Z             {
2026-06-23T09:38:02.8906175Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8906457Z               "line": 6364
2026-06-23T09:38:02.8906675Z             }
2026-06-23T09:38:02.8906876Z           ]
2026-06-23T09:38:02.8907063Z         },
2026-06-23T09:38:02.8907257Z         "int": {
2026-06-23T09:38:02.8907467Z           "complete": false,
2026-06-23T09:38:02.8907707Z           "evidence": []
2026-06-23T09:38:02.8907923Z         },
2026-06-23T09:38:02.8908118Z         "unit": {
2026-06-23T09:38:02.8908342Z           "complete": false,
2026-06-23T09:38:02.8908574Z           "evidence": []
2026-06-23T09:38:02.8908790Z         }
2026-06-23T09:38:02.8909057Z       }
2026-06-23T09:38:02.8909248Z     },
2026-06-23T09:38:02.8909438Z     {
2026-06-23T09:38:02.8909658Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-23T09:38:02.8912831Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-23T09:38:02.8915722Z       "requiredStages": [
2026-06-23T09:38:02.8915962Z         "impl",
2026-06-23T09:38:02.8916168Z         "unit"
2026-06-23T09:38:02.8916374Z       ],
2026-06-23T09:38:02.8916568Z       "stages": {
2026-06-23T09:38:02.8916774Z         "doc": {
2026-06-23T09:38:02.8916994Z           "complete": false,
2026-06-23T09:38:02.8917226Z           "evidence": []
2026-06-23T09:38:02.8917441Z         },
2026-06-23T09:38:02.8917633Z         "impl": {
2026-06-23T09:38:02.8917851Z           "complete": true,
2026-06-23T09:38:02.8918079Z           "evidence": [
2026-06-23T09:38:02.8918291Z             {
2026-06-23T09:38:02.8918527Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8918806Z               "line": 8
2026-06-23T09:38:02.8919101Z             },
2026-06-23T09:38:02.8919288Z             {
2026-06-23T09:38:02.8919512Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8919788Z               "line": 51
2026-06-23T09:38:02.8920008Z             },
2026-06-23T09:38:02.8920204Z             {
2026-06-23T09:38:02.8920427Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8920704Z               "line": 82
2026-06-23T09:38:02.8920918Z             },
2026-06-23T09:38:02.8921117Z             {
2026-06-23T09:38:02.8921344Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8921616Z               "line": 229
2026-06-23T09:38:02.8921831Z             }
2026-06-23T09:38:02.8922030Z           ]
2026-06-23T09:38:02.8922208Z         },
2026-06-23T09:38:02.8922404Z         "int": {
2026-06-23T09:38:02.8922617Z           "complete": false,
2026-06-23T09:38:02.8922851Z           "evidence": []
2026-06-23T09:38:02.8923067Z         },
2026-06-23T09:38:02.8923372Z         "unit": {
2026-06-23T09:38:02.8923595Z           "complete": true,
2026-06-23T09:38:02.8923828Z           "evidence": [
2026-06-23T09:38:02.8924052Z             {
2026-06-23T09:38:02.8924280Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8924551Z               "line": 249
2026-06-23T09:38:02.8924767Z             },
2026-06-23T09:38:02.8925053Z             {
2026-06-23T09:38:02.8925288Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8925554Z               "line": 256
2026-06-23T09:38:02.8925772Z             },
2026-06-23T09:38:02.8925970Z             {
2026-06-23T09:38:02.8926196Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8926466Z               "line": 263
2026-06-23T09:38:02.8926682Z             },
2026-06-23T09:38:02.8926881Z             {
2026-06-23T09:38:02.8927109Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8927376Z               "line": 270
2026-06-23T09:38:02.8927596Z             },
2026-06-23T09:38:02.8927787Z             {
2026-06-23T09:38:02.8928011Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8928273Z               "line": 297
2026-06-23T09:38:02.8928484Z             },
2026-06-23T09:38:02.8928683Z             {
2026-06-23T09:38:02.8928907Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8929262Z               "line": 307
2026-06-23T09:38:02.8929471Z             },
2026-06-23T09:38:02.8929666Z             {
2026-06-23T09:38:02.8929877Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8930144Z               "line": 317
2026-06-23T09:38:02.8930363Z             },
2026-06-23T09:38:02.8930559Z             {
2026-06-23T09:38:02.8930788Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8931055Z               "line": 331
2026-06-23T09:38:02.8931274Z             },
2026-06-23T09:38:02.8931464Z             {
2026-06-23T09:38:02.8931692Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8931971Z               "line": 340
2026-06-23T09:38:02.8932186Z             },
2026-06-23T09:38:02.8932377Z             {
2026-06-23T09:38:02.8932600Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8932872Z               "line": 348
2026-06-23T09:38:02.8933092Z             }
2026-06-23T09:38:02.8933293Z           ]
2026-06-23T09:38:02.8933487Z         }
2026-06-23T09:38:02.8933674Z       }
2026-06-23T09:38:02.8933864Z     },
2026-06-23T09:38:02.8934049Z     {
2026-06-23T09:38:02.8934261Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-23T09:38:02.8939632Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-23T09:38:02.8943761Z       "requiredStages": [
2026-06-23T09:38:02.8943981Z         "impl",
2026-06-23T09:38:02.8944187Z         "unit"
2026-06-23T09:38:02.8944386Z       ],
2026-06-23T09:38:02.8944572Z       "stages": {
2026-06-23T09:38:02.8944778Z         "doc": {
2026-06-23T09:38:02.8944996Z           "complete": false,
2026-06-23T09:38:02.8945329Z           "evidence": []
2026-06-23T09:38:02.8945539Z         },
2026-06-23T09:38:02.8945744Z         "impl": {
2026-06-23T09:38:02.8945949Z           "complete": true,
2026-06-23T09:38:02.8946178Z           "evidence": [
2026-06-23T09:38:02.8946398Z             {
2026-06-23T09:38:02.8946645Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.8946931Z               "line": 141
2026-06-23T09:38:02.8947155Z             },
2026-06-23T09:38:02.8947345Z             {
2026-06-23T09:38:02.8947557Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8947839Z               "line": 1468
2026-06-23T09:38:02.8948059Z             },
2026-06-23T09:38:02.8948253Z             {
2026-06-23T09:38:02.8948468Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8948740Z               "line": 2499
2026-06-23T09:38:02.8949064Z             },
2026-06-23T09:38:02.8949265Z             {
2026-06-23T09:38:02.8949484Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8949750Z               "line": 5023
2026-06-23T09:38:02.8949966Z             },
2026-06-23T09:38:02.8950155Z             {
2026-06-23T09:38:02.8950373Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8950635Z               "line": 5121
2026-06-23T09:38:02.8950853Z             },
2026-06-23T09:38:02.8951049Z             {
2026-06-23T09:38:02.8951260Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8951517Z               "line": 5912
2026-06-23T09:38:02.8951740Z             },
2026-06-23T09:38:02.8951941Z             {
2026-06-23T09:38:02.8952175Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8952437Z               "line": 39
2026-06-23T09:38:02.8952655Z             }
2026-06-23T09:38:02.8952850Z           ]
2026-06-23T09:38:02.8953043Z         },
2026-06-23T09:38:02.8953231Z         "int": {
2026-06-23T09:38:02.8953435Z           "complete": false,
2026-06-23T09:38:02.8953668Z           "evidence": []
2026-06-23T09:38:02.8953893Z         },
2026-06-23T09:38:02.8954084Z         "unit": {
2026-06-23T09:38:02.8954292Z           "complete": true,
2026-06-23T09:38:02.8954526Z           "evidence": [
2026-06-23T09:38:02.8954742Z             {
2026-06-23T09:38:02.8954961Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8955228Z               "line": 11810
2026-06-23T09:38:02.8955452Z             },
2026-06-23T09:38:02.8955646Z             {
2026-06-23T09:38:02.8955884Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8956142Z               "line": 281
2026-06-23T09:38:02.8956367Z             },
2026-06-23T09:38:02.8956580Z             {
2026-06-23T09:38:02.8956800Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8957072Z               "line": 358
2026-06-23T09:38:02.8957297Z             },
2026-06-23T09:38:02.8957491Z             {
2026-06-23T09:38:02.8957720Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8957995Z               "line": 381
2026-06-23T09:38:02.8958217Z             },
2026-06-23T09:38:02.8958423Z             {
2026-06-23T09:38:02.8958648Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-23T09:38:02.8958905Z               "line": 395
2026-06-23T09:38:02.8959186Z             }
2026-06-23T09:38:02.8959386Z           ]
2026-06-23T09:38:02.8959587Z         }
2026-06-23T09:38:02.8959771Z       }
2026-06-23T09:38:02.8959968Z     },
2026-06-23T09:38:02.8960150Z     {
2026-06-23T09:38:02.8960359Z       "id": "REQ-CONSENT-1",
2026-06-23T09:38:02.8961438Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-23T09:38:02.8962620Z       "requiredStages": [
2026-06-23T09:38:02.8962844Z         "impl",
2026-06-23T09:38:02.8963159Z         "unit"
2026-06-23T09:38:02.8963363Z       ],
2026-06-23T09:38:02.8963551Z       "stages": {
2026-06-23T09:38:02.8963757Z         "doc": {
2026-06-23T09:38:02.8963971Z           "complete": false,
2026-06-23T09:38:02.8964199Z           "evidence": []
2026-06-23T09:38:02.8964415Z         },
2026-06-23T09:38:02.8964610Z         "impl": {
2026-06-23T09:38:02.8964820Z           "complete": true,
2026-06-23T09:38:02.8965054Z           "evidence": [
2026-06-23T09:38:02.8965264Z             {
2026-06-23T09:38:02.8965511Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8965807Z               "line": 27
2026-06-23T09:38:02.8966031Z             },
2026-06-23T09:38:02.8966230Z             {
2026-06-23T09:38:02.8966468Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8966745Z               "line": 75
2026-06-23T09:38:02.8966955Z             },
2026-06-23T09:38:02.8967145Z             {
2026-06-23T09:38:02.8967374Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8967670Z               "line": 98
2026-06-23T09:38:02.8967886Z             },
2026-06-23T09:38:02.8968085Z             {
2026-06-23T09:38:02.8968323Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T09:38:02.8968597Z               "line": 82
2026-06-23T09:38:02.8968811Z             },
2026-06-23T09:38:02.8969078Z             {
2026-06-23T09:38:02.8969311Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T09:38:02.8969598Z               "line": 109
2026-06-23T09:38:02.8969818Z             },
2026-06-23T09:38:02.8970017Z             {
2026-06-23T09:38:02.8970256Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T09:38:02.8970532Z               "line": 127
2026-06-23T09:38:02.8970744Z             },
2026-06-23T09:38:02.8970938Z             {
2026-06-23T09:38:02.8971162Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T09:38:02.8971423Z               "line": 142
2026-06-23T09:38:02.8971650Z             },
2026-06-23T09:38:02.8971845Z             {
2026-06-23T09:38:02.8972060Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8972313Z               "line": 8113
2026-06-23T09:38:02.8972536Z             }
2026-06-23T09:38:02.8972728Z           ]
2026-06-23T09:38:02.8972823Z         },
2026-06-23T09:38:02.8972928Z         "int": {
2026-06-23T09:38:02.8973038Z           "complete": false,
2026-06-23T09:38:02.8973147Z           "evidence": []
2026-06-23T09:38:02.8973252Z         },
2026-06-23T09:38:02.8973367Z         "unit": {
2026-06-23T09:38:02.8973471Z           "complete": true,
2026-06-23T09:38:02.8973582Z           "evidence": [
2026-06-23T09:38:02.8973677Z             {
2026-06-23T09:38:02.8973828Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8973928Z               "line": 334
2026-06-23T09:38:02.8974032Z             },
2026-06-23T09:38:02.8974135Z             {
2026-06-23T09:38:02.8974260Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8974379Z               "line": 380
2026-06-23T09:38:02.8974478Z             },
2026-06-23T09:38:02.8974584Z             {
2026-06-23T09:38:02.8974727Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8974836Z               "line": 391
2026-06-23T09:38:02.8974932Z             },
2026-06-23T09:38:02.8975027Z             {
2026-06-23T09:38:02.8975160Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T09:38:02.8975271Z               "line": 165
2026-06-23T09:38:02.8975376Z             },
2026-06-23T09:38:02.8975485Z             {
2026-06-23T09:38:02.8975619Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T09:38:02.8975829Z               "line": 184
2026-06-23T09:38:02.8975924Z             },
2026-06-23T09:38:02.8976029Z             {
2026-06-23T09:38:02.8976168Z               "path": "crates/spt-store/src/grants.rs",
2026-06-23T09:38:02.8976281Z               "line": 204
2026-06-23T09:38:02.8976386Z             },
2026-06-23T09:38:02.8976582Z             {
2026-06-23T09:38:02.8976714Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8976819Z               "line": 9730
2026-06-23T09:38:02.8976930Z             }
2026-06-23T09:38:02.8977028Z           ]
2026-06-23T09:38:02.8977134Z         }
2026-06-23T09:38:02.8977239Z       }
2026-06-23T09:38:02.8977338Z     },
2026-06-23T09:38:02.8977439Z     {
2026-06-23T09:38:02.8977544Z       "id": "REQ-CONSENT-2",
2026-06-23T09:38:02.8978427Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-23T09:38:02.8978539Z       "requiredStages": [
2026-06-23T09:38:02.8978645Z         "impl",
2026-06-23T09:38:02.8978751Z         "unit"
2026-06-23T09:38:02.8978854Z       ],
2026-06-23T09:38:02.8979111Z       "stages": {
2026-06-23T09:38:02.8979405Z         "doc": {
2026-06-23T09:38:02.8979538Z           "complete": false,
2026-06-23T09:38:02.8984820Z           "evidence": []
2026-06-23T09:38:02.8984958Z         },
2026-06-23T09:38:02.8985062Z         "impl": {
2026-06-23T09:38:02.8985187Z           "complete": true,
2026-06-23T09:38:02.8985292Z           "evidence": [
2026-06-23T09:38:02.8985382Z             {
2026-06-23T09:38:02.8985545Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8985654Z               "line": 140
2026-06-23T09:38:02.8985755Z             },
2026-06-23T09:38:02.8985855Z             {
2026-06-23T09:38:02.8986026Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8986136Z               "line": 165
2026-06-23T09:38:02.8986236Z             },
2026-06-23T09:38:02.8986336Z             {
2026-06-23T09:38:02.8986475Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8986579Z               "line": 199
2026-06-23T09:38:02.8986684Z             },
2026-06-23T09:38:02.8986790Z             {
2026-06-23T09:38:02.8986927Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8987038Z               "line": 241
2026-06-23T09:38:02.8987142Z             },
2026-06-23T09:38:02.8987231Z             {
2026-06-23T09:38:02.8987365Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8987471Z               "line": 269
2026-06-23T09:38:02.8987574Z             },
2026-06-23T09:38:02.8987665Z             {
2026-06-23T09:38:02.8987799Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8987903Z               "line": 300
2026-06-23T09:38:02.8988009Z             },
2026-06-23T09:38:02.8988113Z             {
2026-06-23T09:38:02.8988241Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8988352Z               "line": 7904
2026-06-23T09:38:02.8988447Z             },
2026-06-23T09:38:02.8988546Z             {
2026-06-23T09:38:02.8988677Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8988780Z               "line": 7962
2026-06-23T09:38:02.8988885Z             }
2026-06-23T09:38:02.8989077Z           ]
2026-06-23T09:38:02.8989181Z         },
2026-06-23T09:38:02.8989278Z         "int": {
2026-06-23T09:38:02.8989391Z           "complete": false,
2026-06-23T09:38:02.8989495Z           "evidence": []
2026-06-23T09:38:02.8989591Z         },
2026-06-23T09:38:02.8989700Z         "unit": {
2026-06-23T09:38:02.8989807Z           "complete": true,
2026-06-23T09:38:02.8989908Z           "evidence": [
2026-06-23T09:38:02.8990003Z             {
2026-06-23T09:38:02.8990150Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8990413Z               "line": 419
2026-06-23T09:38:02.8990517Z             },
2026-06-23T09:38:02.8990614Z             {
2026-06-23T09:38:02.8990760Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8990867Z               "line": 436
2026-06-23T09:38:02.8990971Z             },
2026-06-23T09:38:02.8991152Z             {
2026-06-23T09:38:02.8991300Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8991409Z               "line": 472
2026-06-23T09:38:02.8991511Z             },
2026-06-23T09:38:02.8991606Z             {
2026-06-23T09:38:02.8991748Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:02.8991859Z               "line": 516
2026-06-23T09:38:02.8991953Z             },
2026-06-23T09:38:02.8992058Z             {
2026-06-23T09:38:02.8992174Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8992287Z               "line": 11152
2026-06-23T09:38:02.8992386Z             },
2026-06-23T09:38:02.8992491Z             {
2026-06-23T09:38:02.8992613Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.8992717Z               "line": 11234
2026-06-23T09:38:02.8992823Z             }
2026-06-23T09:38:02.8992923Z           ]
2026-06-23T09:38:02.8993027Z         }
2026-06-23T09:38:02.8993128Z       }
2026-06-23T09:38:02.8993233Z     },
2026-06-23T09:38:02.8993342Z     {
2026-06-23T09:38:02.8993443Z       "id": "REQ-CONSENT-3",
2026-06-23T09:38:02.8995365Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-23T09:38:02.8995499Z       "requiredStages": [
2026-06-23T09:38:02.8995598Z         "doc",
2026-06-23T09:38:02.8995700Z         "impl",
2026-06-23T09:38:02.8995804Z         "unit",
2026-06-23T09:38:02.8995909Z         "int"
2026-06-23T09:38:02.8996015Z       ],
2026-06-23T09:38:02.8996119Z       "stages": {
2026-06-23T09:38:02.8996219Z         "doc": {
2026-06-23T09:38:02.8996320Z           "complete": true,
2026-06-23T09:38:02.8996419Z           "evidence": [
2026-06-23T09:38:02.8996519Z             {
2026-06-23T09:38:02.8996639Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.8996748Z               "line": 317
2026-06-23T09:38:02.8996853Z             }
2026-06-23T09:38:02.8996954Z           ]
2026-06-23T09:38:02.8997049Z         },
2026-06-23T09:38:02.8997149Z         "impl": {
2026-06-23T09:38:02.8997254Z           "complete": true,
2026-06-23T09:38:02.8997368Z           "evidence": [
2026-06-23T09:38:02.8997463Z             {
2026-06-23T09:38:02.8997618Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:02.8997725Z               "line": 123
2026-06-23T09:38:02.8997824Z             },
2026-06-23T09:38:02.8997925Z             {
2026-06-23T09:38:02.8998068Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:02.8998187Z               "line": 162
2026-06-23T09:38:02.8998273Z             },
2026-06-23T09:38:02.8998374Z             {
2026-06-23T09:38:02.8998526Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:02.8998636Z               "line": 291
2026-06-23T09:38:02.8998740Z             },
2026-06-23T09:38:02.8998840Z             {
2026-06-23T09:38:02.8999065Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.8999160Z               "line": 621
2026-06-23T09:38:02.8999265Z             },
2026-06-23T09:38:02.8999370Z             {
2026-06-23T09:38:02.8999514Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.8999718Z               "line": 871
2026-06-23T09:38:02.8999804Z             },
2026-06-23T09:38:02.8999909Z             {
2026-06-23T09:38:02.9000036Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9000141Z               "line": 8030
2026-06-23T09:38:02.9000250Z             }
2026-06-23T09:38:02.9000448Z           ]
2026-06-23T09:38:02.9000550Z         },
2026-06-23T09:38:02.9000649Z         "int": {
2026-06-23T09:38:02.9000768Z           "complete": true,
2026-06-23T09:38:02.9000878Z           "evidence": [
2026-06-23T09:38:02.9000983Z             {
2026-06-23T09:38:02.9001141Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-23T09:38:02.9001235Z               "line": 16
2026-06-23T09:38:02.9001330Z             }
2026-06-23T09:38:02.9001432Z           ]
2026-06-23T09:38:02.9001536Z         },
2026-06-23T09:38:02.9001636Z         "unit": {
2026-06-23T09:38:02.9001746Z           "complete": true,
2026-06-23T09:38:02.9001860Z           "evidence": [
2026-06-23T09:38:02.9001960Z             {
2026-06-23T09:38:02.9002099Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:02.9002208Z               "line": 1019
2026-06-23T09:38:02.9002308Z             },
2026-06-23T09:38:02.9002409Z             {
2026-06-23T09:38:02.9002546Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:02.9002662Z               "line": 1066
2026-06-23T09:38:02.9002763Z             },
2026-06-23T09:38:02.9002866Z             {
2026-06-23T09:38:02.9003013Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.9003113Z               "line": 1441
2026-06-23T09:38:02.9003215Z             }
2026-06-23T09:38:02.9003320Z           ]
2026-06-23T09:38:02.9003426Z         }
2026-06-23T09:38:02.9003526Z       }
2026-06-23T09:38:02.9003625Z     },
2026-06-23T09:38:02.9003717Z     {
2026-06-23T09:38:02.9003840Z       "id": "REQ-CONV-1",
2026-06-23T09:38:02.9005258Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-23T09:38:02.9005390Z       "requiredStages": [
2026-06-23T09:38:02.9005494Z         "impl",
2026-06-23T09:38:02.9005598Z         "unit"
2026-06-23T09:38:02.9005693Z       ],
2026-06-23T09:38:02.9005806Z       "stages": {
2026-06-23T09:38:02.9005906Z         "doc": {
2026-06-23T09:38:02.9006027Z           "complete": false,
2026-06-23T09:38:02.9006125Z           "evidence": []
2026-06-23T09:38:02.9006230Z         },
2026-06-23T09:38:02.9006322Z         "impl": {
2026-06-23T09:38:02.9006435Z           "complete": true,
2026-06-23T09:38:02.9006545Z           "evidence": [
2026-06-23T09:38:02.9006650Z             {
2026-06-23T09:38:02.9006793Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9006899Z               "line": 938
2026-06-23T09:38:02.9007003Z             },
2026-06-23T09:38:02.9007103Z             {
2026-06-23T09:38:02.9007247Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:02.9007347Z               "line": 94
2026-06-23T09:38:02.9007437Z             },
2026-06-23T09:38:02.9007543Z             {
2026-06-23T09:38:02.9007685Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:02.9007790Z               "line": 345
2026-06-23T09:38:02.9007891Z             },
2026-06-23T09:38:02.9007999Z             {
2026-06-23T09:38:02.9008139Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:02.9008248Z               "line": 387
2026-06-23T09:38:02.9008356Z             },
2026-06-23T09:38:02.9008442Z             {
2026-06-23T09:38:02.9008581Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:02.9008761Z               "line": 472
2026-06-23T09:38:02.9008867Z             },
2026-06-23T09:38:02.9009042Z             {
2026-06-23T09:38:02.9009177Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9009286Z               "line": 667
2026-06-23T09:38:02.9009386Z             },
2026-06-23T09:38:02.9009591Z             {
2026-06-23T09:38:02.9009739Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9009849Z               "line": 693
2026-06-23T09:38:02.9009944Z             },
2026-06-23T09:38:02.9010045Z             {
2026-06-23T09:38:02.9010202Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:02.9010306Z               "line": 369
2026-06-23T09:38:02.9010403Z             },
2026-06-23T09:38:02.9010503Z             {
2026-06-23T09:38:02.9010644Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-23T09:38:02.9010744Z               "line": 19
2026-06-23T09:38:02.9010852Z             }
2026-06-23T09:38:02.9010951Z           ]
2026-06-23T09:38:02.9011047Z         },
2026-06-23T09:38:02.9011148Z         "int": {
2026-06-23T09:38:02.9011251Z           "complete": false,
2026-06-23T09:38:02.9011367Z           "evidence": []
2026-06-23T09:38:02.9011476Z         },
2026-06-23T09:38:02.9011566Z         "unit": {
2026-06-23T09:38:02.9011682Z           "complete": true,
2026-06-23T09:38:02.9011786Z           "evidence": [
2026-06-23T09:38:02.9011886Z             {
2026-06-23T09:38:02.9012025Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9012139Z               "line": 1263
2026-06-23T09:38:02.9012238Z             },
2026-06-23T09:38:02.9012340Z             {
2026-06-23T09:38:02.9012483Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-23T09:38:02.9012592Z               "line": 108
2026-06-23T09:38:02.9012693Z             },
2026-06-23T09:38:02.9012791Z             {
2026-06-23T09:38:02.9012936Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-23T09:38:02.9013050Z               "line": 134
2026-06-23T09:38:02.9013150Z             },
2026-06-23T09:38:02.9013251Z             {
2026-06-23T09:38:02.9013393Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-23T09:38:02.9013497Z               "line": 144
2026-06-23T09:38:02.9013607Z             }
2026-06-23T09:38:02.9013706Z           ]
2026-06-23T09:38:02.9013813Z         }
2026-06-23T09:38:02.9013914Z       }
2026-06-23T09:38:02.9014000Z     },
2026-06-23T09:38:02.9014100Z     {
2026-06-23T09:38:02.9014214Z       "id": "REQ-CONV-2",
2026-06-23T09:38:02.9015353Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-23T09:38:02.9015473Z       "requiredStages": [
2026-06-23T09:38:02.9015575Z         "impl",
2026-06-23T09:38:02.9015673Z         "unit"
2026-06-23T09:38:02.9015779Z       ],
2026-06-23T09:38:02.9015870Z       "stages": {
2026-06-23T09:38:02.9015978Z         "doc": {
2026-06-23T09:38:02.9016096Z           "complete": false,
2026-06-23T09:38:02.9016202Z           "evidence": []
2026-06-23T09:38:02.9016314Z         },
2026-06-23T09:38:02.9016413Z         "impl": {
2026-06-23T09:38:02.9016529Z           "complete": true,
2026-06-23T09:38:02.9016624Z           "evidence": [
2026-06-23T09:38:02.9016719Z             {
2026-06-23T09:38:02.9016872Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9016981Z               "line": 617
2026-06-23T09:38:02.9017086Z             },
2026-06-23T09:38:02.9017182Z             {
2026-06-23T09:38:02.9017329Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T09:38:02.9017440Z               "line": 119
2026-06-23T09:38:02.9017653Z             },
2026-06-23T09:38:02.9017754Z             {
2026-06-23T09:38:02.9017912Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9018016Z               "line": 841
2026-06-23T09:38:02.9018108Z             },
2026-06-23T09:38:02.9018211Z             {
2026-06-23T09:38:02.9018365Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9018540Z               "line": 852
2026-06-23T09:38:02.9018641Z             },
2026-06-23T09:38:02.9018742Z             {
2026-06-23T09:38:02.9018873Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:02.9019055Z               "line": 334
2026-06-23T09:38:02.9019160Z             },
2026-06-23T09:38:02.9019264Z             {
2026-06-23T09:38:02.9019394Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9019503Z               "line": 3724
2026-06-23T09:38:02.9019602Z             },
2026-06-23T09:38:02.9019704Z             {
2026-06-23T09:38:02.9019828Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9019936Z               "line": 3740
2026-06-23T09:38:02.9020042Z             },
2026-06-23T09:38:02.9020137Z             {
2026-06-23T09:38:02.9020256Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9020362Z               "line": 3825
2026-06-23T09:38:02.9020461Z             }
2026-06-23T09:38:02.9020566Z           ]
2026-06-23T09:38:02.9020668Z         },
2026-06-23T09:38:02.9020771Z         "int": {
2026-06-23T09:38:02.9020881Z           "complete": false,
2026-06-23T09:38:02.9020992Z           "evidence": []
2026-06-23T09:38:02.9021085Z         },
2026-06-23T09:38:02.9021185Z         "unit": {
2026-06-23T09:38:02.9021295Z           "complete": true,
2026-06-23T09:38:02.9021403Z           "evidence": [
2026-06-23T09:38:02.9021507Z             {
2026-06-23T09:38:02.9021655Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9021765Z               "line": 889
2026-06-23T09:38:02.9021864Z             },
2026-06-23T09:38:02.9021970Z             {
2026-06-23T09:38:02.9022112Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9022222Z               "line": 1014
2026-06-23T09:38:02.9022328Z             },
2026-06-23T09:38:02.9022422Z             {
2026-06-23T09:38:02.9022576Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T09:38:02.9022690Z               "line": 215
2026-06-23T09:38:02.9022794Z             }
2026-06-23T09:38:02.9022891Z           ]
2026-06-23T09:38:02.9022995Z         }
2026-06-23T09:38:02.9023095Z       }
2026-06-23T09:38:02.9023186Z     },
2026-06-23T09:38:02.9023286Z     {
2026-06-23T09:38:02.9023396Z       "id": "REQ-DAEMON-1",
2026-06-23T09:38:02.9023596Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-23T09:38:02.9023705Z       "requiredStages": [
2026-06-23T09:38:02.9023806Z         "impl",
2026-06-23T09:38:02.9023902Z         "unit",
2026-06-23T09:38:02.9024005Z         "int"
2026-06-23T09:38:02.9024104Z       ],
2026-06-23T09:38:02.9024209Z       "stages": {
2026-06-23T09:38:02.9024303Z         "doc": {
2026-06-23T09:38:02.9024412Z           "complete": false,
2026-06-23T09:38:02.9024522Z           "evidence": []
2026-06-23T09:38:02.9024627Z         },
2026-06-23T09:38:02.9024722Z         "impl": {
2026-06-23T09:38:02.9024833Z           "complete": true,
2026-06-23T09:38:02.9024947Z           "evidence": [
2026-06-23T09:38:02.9025055Z             {
2026-06-23T09:38:02.9025204Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9025304Z               "line": 229
2026-06-23T09:38:02.9025409Z             },
2026-06-23T09:38:02.9025505Z             {
2026-06-23T09:38:02.9025652Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:02.9025758Z               "line": 12
2026-06-23T09:38:02.9025858Z             },
2026-06-23T09:38:02.9025948Z             {
2026-06-23T09:38:02.9026096Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9026319Z               "line": 16
2026-06-23T09:38:02.9026421Z             },
2026-06-23T09:38:02.9026529Z             {
2026-06-23T09:38:02.9026661Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9026776Z               "line": 507
2026-06-23T09:38:02.9026870Z             },
2026-06-23T09:38:02.9026969Z             {
2026-06-23T09:38:02.9027231Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9027336Z               "line": 24
2026-06-23T09:38:02.9027447Z             },
2026-06-23T09:38:02.9027546Z             {
2026-06-23T09:38:02.9027690Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9027799Z               "line": 262
2026-06-23T09:38:02.9027903Z             },
2026-06-23T09:38:02.9028000Z             {
2026-06-23T09:38:02.9028133Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9028233Z               "line": 279
2026-06-23T09:38:02.9028334Z             },
2026-06-23T09:38:02.9028447Z             {
2026-06-23T09:38:02.9028586Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9028697Z               "line": 361
2026-06-23T09:38:02.9028800Z             },
2026-06-23T09:38:02.9028901Z             {
2026-06-23T09:38:02.9029420Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9029519Z               "line": 721
2026-06-23T09:38:02.9029625Z             },
2026-06-23T09:38:02.9029730Z             {
2026-06-23T09:38:02.9029862Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-23T09:38:02.9029973Z               "line": 15
2026-06-23T09:38:02.9030063Z             },
2026-06-23T09:38:02.9030168Z             {
2026-06-23T09:38:02.9030297Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9030411Z               "line": 241
2026-06-23T09:38:02.9030516Z             },
2026-06-23T09:38:02.9030617Z             {
2026-06-23T09:38:02.9030735Z               "path": "crates/spt/src/api/live.rs",
2026-06-23T09:38:02.9030850Z               "line": 13
2026-06-23T09:38:02.9030950Z             },
2026-06-23T09:38:02.9031050Z             {
2026-06-23T09:38:02.9031189Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9031298Z               "line": 382
2026-06-23T09:38:02.9031398Z             },
2026-06-23T09:38:02.9031504Z             {
2026-06-23T09:38:02.9031631Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9031745Z               "line": 494
2026-06-23T09:38:02.9031840Z             }
2026-06-23T09:38:02.9031944Z           ]
2026-06-23T09:38:02.9032048Z         },
2026-06-23T09:38:02.9032148Z         "int": {
2026-06-23T09:38:02.9032263Z           "complete": true,
2026-06-23T09:38:02.9032358Z           "evidence": [
2026-06-23T09:38:02.9032463Z             {
2026-06-23T09:38:02.9032658Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-23T09:38:02.9032758Z               "line": 2
2026-06-23T09:38:02.9032864Z             },
2026-06-23T09:38:02.9032968Z             {
2026-06-23T09:38:02.9033155Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-23T09:38:02.9033259Z               "line": 16
2026-06-23T09:38:02.9033359Z             },
2026-06-23T09:38:02.9033451Z             {
2026-06-23T09:38:02.9033621Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-23T09:38:02.9033727Z               "line": 12
2026-06-23T09:38:02.9033827Z             },
2026-06-23T09:38:02.9033931Z             {
2026-06-23T09:38:02.9034081Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-23T09:38:02.9034194Z               "line": 12
2026-06-23T09:38:02.9034294Z             },
2026-06-23T09:38:02.9034405Z             {
2026-06-23T09:38:02.9034556Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-23T09:38:02.9034664Z               "line": 44
2026-06-23T09:38:02.9034769Z             }
2026-06-23T09:38:02.9034872Z           ]
2026-06-23T09:38:02.9035082Z         },
2026-06-23T09:38:02.9035183Z         "unit": {
2026-06-23T09:38:02.9035291Z           "complete": true,
2026-06-23T09:38:02.9035402Z           "evidence": [
2026-06-23T09:38:02.9035493Z             {
2026-06-23T09:38:02.9035640Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:02.9035750Z               "line": 285
2026-06-23T09:38:02.9035969Z             },
2026-06-23T09:38:02.9036070Z             {
2026-06-23T09:38:02.9036198Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:02.9036308Z               "line": 293
2026-06-23T09:38:02.9036404Z             },
2026-06-23T09:38:02.9036513Z             {
2026-06-23T09:38:02.9036647Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:02.9036761Z               "line": 309
2026-06-23T09:38:02.9036865Z             },
2026-06-23T09:38:02.9036957Z             {
2026-06-23T09:38:02.9037099Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:02.9037212Z               "line": 317
2026-06-23T09:38:02.9037312Z             },
2026-06-23T09:38:02.9037416Z             {
2026-06-23T09:38:02.9037562Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9037673Z               "line": 870
2026-06-23T09:38:02.9037773Z             },
2026-06-23T09:38:02.9037877Z             {
2026-06-23T09:38:02.9038025Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9038130Z               "line": 940
2026-06-23T09:38:02.9038231Z             },
2026-06-23T09:38:02.9038336Z             {
2026-06-23T09:38:02.9038478Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9038579Z               "line": 1314
2026-06-23T09:38:02.9038683Z             },
2026-06-23T09:38:02.9038783Z             {
2026-06-23T09:38:02.9038928Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9039242Z               "line": 1351
2026-06-23T09:38:02.9039350Z             },
2026-06-23T09:38:02.9039456Z             {
2026-06-23T09:38:02.9039605Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9039723Z               "line": 1374
2026-06-23T09:38:02.9039815Z             },
2026-06-23T09:38:02.9039924Z             {
2026-06-23T09:38:02.9040065Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9040175Z               "line": 1403
2026-06-23T09:38:02.9040286Z             },
2026-06-23T09:38:02.9040384Z             {
2026-06-23T09:38:02.9040529Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9040628Z               "line": 1451
2026-06-23T09:38:02.9040728Z             },
2026-06-23T09:38:02.9040824Z             {
2026-06-23T09:38:02.9040957Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9041066Z               "line": 1494
2026-06-23T09:38:02.9041168Z             },
2026-06-23T09:38:02.9041272Z             {
2026-06-23T09:38:02.9041405Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-23T09:38:02.9041520Z               "line": 106
2026-06-23T09:38:02.9041629Z             },
2026-06-23T09:38:02.9041725Z             {
2026-06-23T09:38:02.9041868Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-23T09:38:02.9041972Z               "line": 132
2026-06-23T09:38:02.9042078Z             },
2026-06-23T09:38:02.9042178Z             {
2026-06-23T09:38:02.9042324Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9042434Z               "line": 530
2026-06-23T09:38:02.9042528Z             }
2026-06-23T09:38:02.9042632Z           ]
2026-06-23T09:38:02.9042732Z         }
2026-06-23T09:38:02.9042829Z       }
2026-06-23T09:38:02.9042927Z     },
2026-06-23T09:38:02.9043023Z     {
2026-06-23T09:38:02.9043138Z       "id": "REQ-DAEMON-2",
2026-06-23T09:38:02.9043299Z       "title": "Broker/brain split for seamless self-update",
2026-06-23T09:38:02.9043410Z       "requiredStages": [
2026-06-23T09:38:02.9043509Z         "impl",
2026-06-23T09:38:02.9043604Z         "unit",
2026-06-23T09:38:02.9043801Z         "int"
2026-06-23T09:38:02.9043900Z       ],
2026-06-23T09:38:02.9044006Z       "stages": {
2026-06-23T09:38:02.9044100Z         "doc": {
2026-06-23T09:38:02.9044205Z           "complete": true,
2026-06-23T09:38:02.9044311Z           "evidence": [
2026-06-23T09:38:02.9044420Z             {
2026-06-23T09:38:02.9044558Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-23T09:38:02.9044763Z               "line": 250
2026-06-23T09:38:02.9044873Z             }
2026-06-23T09:38:02.9044980Z           ]
2026-06-23T09:38:02.9045083Z         },
2026-06-23T09:38:02.9045186Z         "impl": {
2026-06-23T09:38:02.9045301Z           "complete": true,
2026-06-23T09:38:02.9045404Z           "evidence": [
2026-06-23T09:38:02.9045513Z             {
2026-06-23T09:38:02.9045642Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9045761Z               "line": 23
2026-06-23T09:38:02.9045866Z             },
2026-06-23T09:38:02.9045957Z             {
2026-06-23T09:38:02.9046114Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9046219Z               "line": 922
2026-06-23T09:38:02.9046324Z             },
2026-06-23T09:38:02.9046429Z             {
2026-06-23T09:38:02.9046558Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9046667Z               "line": 963
2026-06-23T09:38:02.9046777Z             },
2026-06-23T09:38:02.9046878Z             {
2026-06-23T09:38:02.9047006Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9047115Z               "line": 1227
2026-06-23T09:38:02.9047222Z             },
2026-06-23T09:38:02.9047321Z             {
2026-06-23T09:38:02.9047464Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9047574Z               "line": 32
2026-06-23T09:38:02.9047678Z             },
2026-06-23T09:38:02.9047772Z             {
2026-06-23T09:38:02.9047920Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9048028Z               "line": 1243
2026-06-23T09:38:02.9048123Z             },
2026-06-23T09:38:02.9048224Z             {
2026-06-23T09:38:02.9048352Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9048461Z               "line": 1964
2026-06-23T09:38:02.9048558Z             },
2026-06-23T09:38:02.9048662Z             {
2026-06-23T09:38:02.9048811Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9048915Z               "line": 2251
2026-06-23T09:38:02.9049096Z             },
2026-06-23T09:38:02.9049196Z             {
2026-06-23T09:38:02.9049339Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-23T09:38:02.9049445Z               "line": 11
2026-06-23T09:38:02.9049540Z             },
2026-06-23T09:38:02.9049649Z             {
2026-06-23T09:38:02.9049779Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9049892Z               "line": 153
2026-06-23T09:38:02.9049987Z             },
2026-06-23T09:38:02.9050094Z             {
2026-06-23T09:38:02.9050221Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9050331Z               "line": 343
2026-06-23T09:38:02.9050437Z             },
2026-06-23T09:38:02.9050536Z             {
2026-06-23T09:38:02.9050672Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9050774Z               "line": 13
2026-06-23T09:38:02.9050883Z             },
2026-06-23T09:38:02.9050978Z             {
2026-06-23T09:38:02.9051122Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9051231Z               "line": 27
2026-06-23T09:38:02.9051331Z             },
2026-06-23T09:38:02.9051437Z             {
2026-06-23T09:38:02.9051574Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9051685Z               "line": 147
2026-06-23T09:38:02.9051794Z             },
2026-06-23T09:38:02.9051888Z             {
2026-06-23T09:38:02.9052028Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9052137Z               "line": 632
2026-06-23T09:38:02.9052348Z             },
2026-06-23T09:38:02.9052451Z             {
2026-06-23T09:38:02.9052585Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9052696Z               "line": 853
2026-06-23T09:38:02.9052794Z             },
2026-06-23T09:38:02.9052903Z             {
2026-06-23T09:38:02.9053032Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9053244Z               "line": 1000
2026-06-23T09:38:02.9053350Z             },
2026-06-23T09:38:02.9053454Z             {
2026-06-23T09:38:02.9053597Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9053707Z               "line": 1089
2026-06-23T09:38:02.9053802Z             },
2026-06-23T09:38:02.9053903Z             {
2026-06-23T09:38:02.9054036Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9054145Z               "line": 1211
2026-06-23T09:38:02.9054242Z             },
2026-06-23T09:38:02.9054346Z             {
2026-06-23T09:38:02.9054503Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T09:38:02.9054614Z               "line": 10
2026-06-23T09:38:02.9054714Z             }
2026-06-23T09:38:02.9054818Z           ]
2026-06-23T09:38:02.9054920Z         },
2026-06-23T09:38:02.9055023Z         "int": {
2026-06-23T09:38:02.9055133Z           "complete": true,
2026-06-23T09:38:02.9055239Z           "evidence": [
2026-06-23T09:38:02.9055352Z             {
2026-06-23T09:38:02.9055492Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:02.9055601Z               "line": 17
2026-06-23T09:38:02.9055699Z             },
2026-06-23T09:38:02.9055809Z             {
2026-06-23T09:38:02.9055974Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T09:38:02.9056078Z               "line": 90
2026-06-23T09:38:02.9056184Z             },
2026-06-23T09:38:02.9056284Z             {
2026-06-23T09:38:02.9056436Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T09:38:02.9056546Z               "line": 110
2026-06-23T09:38:02.9056650Z             },
2026-06-23T09:38:02.9056760Z             {
2026-06-23T09:38:02.9056904Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T09:38:02.9057013Z               "line": 186
2026-06-23T09:38:02.9057113Z             },
2026-06-23T09:38:02.9057213Z             {
2026-06-23T09:38:02.9057361Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T09:38:02.9057467Z               "line": 309
2026-06-23T09:38:02.9057571Z             },
2026-06-23T09:38:02.9057671Z             {
2026-06-23T09:38:02.9057824Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-23T09:38:02.9057933Z               "line": 128
2026-06-23T09:38:02.9058039Z             },
2026-06-23T09:38:02.9058148Z             {
2026-06-23T09:38:02.9058294Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-23T09:38:02.9058404Z               "line": 59
2026-06-23T09:38:02.9058503Z             }
2026-06-23T09:38:02.9058611Z           ]
2026-06-23T09:38:02.9058707Z         },
2026-06-23T09:38:02.9058817Z         "unit": {
2026-06-23T09:38:02.9058940Z           "complete": true,
2026-06-23T09:38:02.9059180Z           "evidence": [
2026-06-23T09:38:02.9059283Z             {
2026-06-23T09:38:02.9059423Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-23T09:38:02.9059542Z               "line": 62
2026-06-23T09:38:02.9059632Z             },
2026-06-23T09:38:02.9059738Z             {
2026-06-23T09:38:02.9059885Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-23T09:38:02.9059980Z               "line": 76
2026-06-23T09:38:02.9060081Z             },
2026-06-23T09:38:02.9060181Z             {
2026-06-23T09:38:02.9060325Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-23T09:38:02.9060471Z               "line": 88
2026-06-23T09:38:02.9060625Z             },
2026-06-23T09:38:02.9060762Z             {
2026-06-23T09:38:02.9060974Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9061281Z               "line": 347
2026-06-23T09:38:02.9061415Z             },
2026-06-23T09:38:02.9061562Z             {
2026-06-23T09:38:02.9061744Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9061901Z               "line": 937
2026-06-23T09:38:02.9062039Z             },
2026-06-23T09:38:02.9062182Z             {
2026-06-23T09:38:02.9062511Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9062664Z               "line": 945
2026-06-23T09:38:02.9062802Z             },
2026-06-23T09:38:02.9062932Z             {
2026-06-23T09:38:02.9063121Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9063270Z               "line": 962
2026-06-23T09:38:02.9063416Z             },
2026-06-23T09:38:02.9063554Z             {
2026-06-23T09:38:02.9063743Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9063901Z               "line": 1071
2026-06-23T09:38:02.9064038Z             },
2026-06-23T09:38:02.9064196Z             {
2026-06-23T09:38:02.9064391Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9064545Z               "line": 1282
2026-06-23T09:38:02.9064691Z             },
2026-06-23T09:38:02.9064831Z             {
2026-06-23T09:38:02.9065025Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9065179Z               "line": 1294
2026-06-23T09:38:02.9065335Z             },
2026-06-23T09:38:02.9065484Z             {
2026-06-23T09:38:02.9068836Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T09:38:02.9069124Z               "line": 110
2026-06-23T09:38:02.9069272Z             },
2026-06-23T09:38:02.9069397Z             {
2026-06-23T09:38:02.9069558Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-23T09:38:02.9069659Z               "line": 147
2026-06-23T09:38:02.9069773Z             }
2026-06-23T09:38:02.9069872Z           ]
2026-06-23T09:38:02.9069973Z         }
2026-06-23T09:38:02.9070068Z       }
2026-06-23T09:38:02.9070177Z     },
2026-06-23T09:38:02.9070274Z     {
2026-06-23T09:38:02.9070378Z       "id": "REQ-DAEMON-3",
2026-06-23T09:38:02.9070570Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-23T09:38:02.9070688Z       "requiredStages": [
2026-06-23T09:38:02.9070788Z         "impl",
2026-06-23T09:38:02.9070880Z         "unit",
2026-06-23T09:38:02.9070984Z         "int"
2026-06-23T09:38:02.9071065Z       ],
2026-06-23T09:38:02.9071170Z       "stages": {
2026-06-23T09:38:02.9071271Z         "doc": {
2026-06-23T09:38:02.9071384Z           "complete": false,
2026-06-23T09:38:02.9071495Z           "evidence": []
2026-06-23T09:38:02.9071586Z         },
2026-06-23T09:38:02.9071689Z         "impl": {
2026-06-23T09:38:02.9071798Z           "complete": true,
2026-06-23T09:38:02.9071904Z           "evidence": [
2026-06-23T09:38:02.9072003Z             {
2026-06-23T09:38:02.9072146Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9072252Z               "line": 14
2026-06-23T09:38:02.9072351Z             },
2026-06-23T09:38:02.9072451Z             {
2026-06-23T09:38:02.9072599Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T09:38:02.9072713Z               "line": 11
2026-06-23T09:38:02.9072819Z             },
2026-06-23T09:38:02.9072905Z             {
2026-06-23T09:38:02.9073037Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.9073148Z               "line": 305
2026-06-23T09:38:02.9073257Z             },
2026-06-23T09:38:02.9073347Z             {
2026-06-23T09:38:02.9073477Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9073581Z               "line": 2310
2026-06-23T09:38:02.9073672Z             },
2026-06-23T09:38:02.9073778Z             {
2026-06-23T09:38:02.9073901Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9074010Z               "line": 4890
2026-06-23T09:38:02.9074109Z             },
2026-06-23T09:38:02.9074213Z             {
2026-06-23T09:38:02.9074355Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9074641Z               "line": 4911
2026-06-23T09:38:02.9074742Z             }
2026-06-23T09:38:02.9074837Z           ]
2026-06-23T09:38:02.9074936Z         },
2026-06-23T09:38:02.9075033Z         "int": {
2026-06-23T09:38:02.9075147Z           "complete": true,
2026-06-23T09:38:02.9075256Z           "evidence": [
2026-06-23T09:38:02.9075457Z             {
2026-06-23T09:38:02.9075609Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:02.9075710Z               "line": 49
2026-06-23T09:38:02.9075814Z             },
2026-06-23T09:38:02.9075914Z             {
2026-06-23T09:38:02.9076054Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:02.9076167Z               "line": 487
2026-06-23T09:38:02.9076263Z             }
2026-06-23T09:38:02.9076369Z           ]
2026-06-23T09:38:02.9076467Z         },
2026-06-23T09:38:02.9076568Z         "unit": {
2026-06-23T09:38:02.9076684Z           "complete": true,
2026-06-23T09:38:02.9076796Z           "evidence": [
2026-06-23T09:38:02.9076900Z             {
2026-06-23T09:38:02.9077034Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9077146Z               "line": 1553
2026-06-23T09:38:02.9077246Z             },
2026-06-23T09:38:02.9077347Z             {
2026-06-23T09:38:02.9077475Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9077580Z               "line": 12253
2026-06-23T09:38:02.9077685Z             }
2026-06-23T09:38:02.9077775Z           ]
2026-06-23T09:38:02.9077880Z         }
2026-06-23T09:38:02.9077977Z       }
2026-06-23T09:38:02.9078081Z     },
2026-06-23T09:38:02.9078166Z     {
2026-06-23T09:38:02.9078282Z       "id": "REQ-DAEMON-4",
2026-06-23T09:38:02.9078428Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-23T09:38:02.9078544Z       "requiredStages": [
2026-06-23T09:38:02.9078644Z         "impl",
2026-06-23T09:38:02.9078748Z         "unit",
2026-06-23T09:38:02.9078844Z         "int"
2026-06-23T09:38:02.9079024Z       ],
2026-06-23T09:38:02.9079111Z       "stages": {
2026-06-23T09:38:02.9079212Z         "doc": {
2026-06-23T09:38:02.9079320Z           "complete": false,
2026-06-23T09:38:02.9079424Z           "evidence": []
2026-06-23T09:38:02.9079519Z         },
2026-06-23T09:38:02.9079628Z         "impl": {
2026-06-23T09:38:02.9079737Z           "complete": true,
2026-06-23T09:38:02.9079841Z           "evidence": [
2026-06-23T09:38:02.9079948Z             {
2026-06-23T09:38:02.9080098Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9080209Z               "line": 675
2026-06-23T09:38:02.9080300Z             },
2026-06-23T09:38:02.9080404Z             {
2026-06-23T09:38:02.9080552Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9080657Z               "line": 740
2026-06-23T09:38:02.9080757Z             },
2026-06-23T09:38:02.9080849Z             {
2026-06-23T09:38:02.9080995Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9081106Z               "line": 762
2026-06-23T09:38:02.9081210Z             }
2026-06-23T09:38:02.9081306Z           ]
2026-06-23T09:38:02.9081401Z         },
2026-06-23T09:38:02.9081506Z         "int": {
2026-06-23T09:38:02.9081620Z           "complete": true,
2026-06-23T09:38:02.9081721Z           "evidence": [
2026-06-23T09:38:02.9081807Z             {
2026-06-23T09:38:02.9081964Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-23T09:38:02.9082079Z               "line": 42
2026-06-23T09:38:02.9082178Z             }
2026-06-23T09:38:02.9082277Z           ]
2026-06-23T09:38:02.9082372Z         },
2026-06-23T09:38:02.9082478Z         "unit": {
2026-06-23T09:38:02.9082583Z           "complete": true,
2026-06-23T09:38:02.9082697Z           "evidence": [
2026-06-23T09:38:02.9082798Z             {
2026-06-23T09:38:02.9082935Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:02.9083041Z               "line": 428
2026-06-23T09:38:02.9083136Z             },
2026-06-23T09:38:02.9083345Z             {
2026-06-23T09:38:02.9083489Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9083593Z               "line": 1168
2026-06-23T09:38:02.9083695Z             },
2026-06-23T09:38:02.9083794Z             {
2026-06-23T09:38:02.9083926Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9084132Z               "line": 1238
2026-06-23T09:38:02.9084237Z             },
2026-06-23T09:38:02.9084339Z             {
2026-06-23T09:38:02.9084470Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9084584Z               "line": 1268
2026-06-23T09:38:02.9084674Z             },
2026-06-23T09:38:02.9084773Z             {
2026-06-23T09:38:02.9084915Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9085026Z               "line": 1301
2026-06-23T09:38:02.9085121Z             }
2026-06-23T09:38:02.9085220Z           ]
2026-06-23T09:38:02.9085321Z         }
2026-06-23T09:38:02.9085426Z       }
2026-06-23T09:38:02.9085530Z     },
2026-06-23T09:38:02.9085617Z     {
2026-06-23T09:38:02.9085726Z       "id": "REQ-DAEMON-5",
2026-06-23T09:38:02.9087152Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-23T09:38:02.9087286Z       "requiredStages": [
2026-06-23T09:38:02.9087394Z         "impl",
2026-06-23T09:38:02.9087494Z         "unit"
2026-06-23T09:38:02.9087594Z       ],
2026-06-23T09:38:02.9087692Z       "stages": {
2026-06-23T09:38:02.9087796Z         "doc": {
2026-06-23T09:38:02.9087907Z           "complete": false,
2026-06-23T09:38:02.9088012Z           "evidence": []
2026-06-23T09:38:02.9088116Z         },
2026-06-23T09:38:02.9088213Z         "impl": {
2026-06-23T09:38:02.9088327Z           "complete": true,
2026-06-23T09:38:02.9088426Z           "evidence": [
2026-06-23T09:38:02.9088532Z             {
2026-06-23T09:38:02.9088683Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9088789Z               "line": 476
2026-06-23T09:38:02.9088899Z             },
2026-06-23T09:38:02.9089070Z             {
2026-06-23T09:38:02.9089214Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9089318Z               "line": 769
2026-06-23T09:38:02.9089429Z             },
2026-06-23T09:38:02.9089542Z             {
2026-06-23T09:38:02.9089685Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9089787Z               "line": 782
2026-06-23T09:38:02.9089881Z             },
2026-06-23T09:38:02.9089980Z             {
2026-06-23T09:38:02.9090108Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9090221Z               "line": 800
2026-06-23T09:38:02.9090330Z             },
2026-06-23T09:38:02.9090431Z             {
2026-06-23T09:38:02.9090578Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9090678Z               "line": 841
2026-06-23T09:38:02.9090774Z             }
2026-06-23T09:38:02.9090879Z           ]
2026-06-23T09:38:02.9090983Z         },
2026-06-23T09:38:02.9091085Z         "int": {
2026-06-23T09:38:02.9091189Z           "complete": false,
2026-06-23T09:38:02.9091303Z           "evidence": []
2026-06-23T09:38:02.9091399Z         },
2026-06-23T09:38:02.9091518Z         "unit": {
2026-06-23T09:38:02.9091661Z           "complete": true,
2026-06-23T09:38:02.9091780Z           "evidence": [
2026-06-23T09:38:02.9091884Z             {
2026-06-23T09:38:02.9092024Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9092128Z               "line": 1189
2026-06-23T09:38:02.9092228Z             },
2026-06-23T09:38:02.9092334Z             {
2026-06-23T09:38:02.9092581Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9092697Z               "line": 1213
2026-06-23T09:38:02.9092794Z             },
2026-06-23T09:38:02.9092889Z             {
2026-06-23T09:38:02.9093019Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9093128Z               "line": 1239
2026-06-23T09:38:02.9093324Z             }
2026-06-23T09:38:02.9093429Z           ]
2026-06-23T09:38:02.9093519Z         }
2026-06-23T09:38:02.9093621Z       }
2026-06-23T09:38:02.9093715Z     },
2026-06-23T09:38:02.9093805Z     {
2026-06-23T09:38:02.9093915Z       "id": "REQ-DAEMON-6",
2026-06-23T09:38:02.9096090Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-23T09:38:02.9096225Z       "requiredStages": [
2026-06-23T09:38:02.9096338Z         "impl",
2026-06-23T09:38:02.9096444Z         "unit"
2026-06-23T09:38:02.9096544Z       ],
2026-06-23T09:38:02.9096649Z       "stages": {
2026-06-23T09:38:02.9096749Z         "doc": {
2026-06-23T09:38:02.9096854Z           "complete": false,
2026-06-23T09:38:02.9096954Z           "evidence": []
2026-06-23T09:38:02.9097053Z         },
2026-06-23T09:38:02.9097160Z         "impl": {
2026-06-23T09:38:02.9097264Z           "complete": true,
2026-06-23T09:38:02.9097373Z           "evidence": [
2026-06-23T09:38:02.9097470Z             {
2026-06-23T09:38:02.9097616Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9097737Z               "line": 495
2026-06-23T09:38:02.9097832Z             },
2026-06-23T09:38:02.9097935Z             {
2026-06-23T09:38:02.9098083Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9098191Z               "line": 526
2026-06-23T09:38:02.9098290Z             },
2026-06-23T09:38:02.9098376Z             {
2026-06-23T09:38:02.9098530Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9098633Z               "line": 55
2026-06-23T09:38:02.9098734Z             },
2026-06-23T09:38:02.9098825Z             {
2026-06-23T09:38:02.9099144Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9099258Z               "line": 70
2026-06-23T09:38:02.9099354Z             },
2026-06-23T09:38:02.9099459Z             {
2026-06-23T09:38:02.9099577Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9099679Z               "line": 2374
2026-06-23T09:38:02.9099783Z             },
2026-06-23T09:38:02.9099888Z             {
2026-06-23T09:38:02.9100008Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9100117Z               "line": 2400
2026-06-23T09:38:02.9100221Z             }
2026-06-23T09:38:02.9100318Z           ]
2026-06-23T09:38:02.9100418Z         },
2026-06-23T09:38:02.9100521Z         "int": {
2026-06-23T09:38:02.9100631Z           "complete": false,
2026-06-23T09:38:02.9100735Z           "evidence": []
2026-06-23T09:38:02.9100838Z         },
2026-06-23T09:38:02.9100933Z         "unit": {
2026-06-23T09:38:02.9101039Z           "complete": true,
2026-06-23T09:38:02.9101152Z           "evidence": [
2026-06-23T09:38:02.9101253Z             {
2026-06-23T09:38:02.9101396Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9101500Z               "line": 288
2026-06-23T09:38:02.9101597Z             },
2026-06-23T09:38:02.9101701Z             {
2026-06-23T09:38:02.9101834Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9102044Z               "line": 299
2026-06-23T09:38:02.9102149Z             },
2026-06-23T09:38:02.9102245Z             {
2026-06-23T09:38:02.9102383Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9102493Z               "line": 325
2026-06-23T09:38:02.9102594Z             },
2026-06-23T09:38:02.9102692Z             {
2026-06-23T09:38:02.9102923Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9103021Z               "line": 351
2026-06-23T09:38:02.9103122Z             }
2026-06-23T09:38:02.9103223Z           ]
2026-06-23T09:38:02.9103317Z         }
2026-06-23T09:38:02.9103422Z       }
2026-06-23T09:38:02.9103507Z     },
2026-06-23T09:38:02.9103613Z     {
2026-06-23T09:38:02.9103726Z       "id": "REQ-DAEMON-7",
2026-06-23T09:38:02.9105172Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-23T09:38:02.9105295Z       "requiredStages": [
2026-06-23T09:38:02.9105395Z         "impl",
2026-06-23T09:38:02.9105511Z         "unit"
2026-06-23T09:38:02.9105614Z       ],
2026-06-23T09:38:02.9105718Z       "stages": {
2026-06-23T09:38:02.9105819Z         "doc": {
2026-06-23T09:38:02.9105921Z           "complete": false,
2026-06-23T09:38:02.9106030Z           "evidence": []
2026-06-23T09:38:02.9106131Z         },
2026-06-23T09:38:02.9106231Z         "impl": {
2026-06-23T09:38:02.9106345Z           "complete": true,
2026-06-23T09:38:02.9106451Z           "evidence": [
2026-06-23T09:38:02.9106546Z             {
2026-06-23T09:38:02.9106689Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9106804Z               "line": 545
2026-06-23T09:38:02.9106908Z             },
2026-06-23T09:38:02.9107014Z             {
2026-06-23T09:38:02.9107162Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9107261Z               "line": 610
2026-06-23T09:38:02.9107362Z             },
2026-06-23T09:38:02.9107461Z             {
2026-06-23T09:38:02.9107604Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9107725Z               "line": 89
2026-06-23T09:38:02.9107810Z             },
2026-06-23T09:38:02.9107914Z             {
2026-06-23T09:38:02.9108039Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9108148Z               "line": 2311
2026-06-23T09:38:02.9108248Z             }
2026-06-23T09:38:02.9108354Z           ]
2026-06-23T09:38:02.9108458Z         },
2026-06-23T09:38:02.9108561Z         "int": {
2026-06-23T09:38:02.9108667Z           "complete": false,
2026-06-23T09:38:02.9108779Z           "evidence": []
2026-06-23T09:38:02.9108878Z         },
2026-06-23T09:38:02.9109052Z         "unit": {
2026-06-23T09:38:02.9109165Z           "complete": true,
2026-06-23T09:38:02.9109280Z           "evidence": [
2026-06-23T09:38:02.9109380Z             {
2026-06-23T09:38:02.9109508Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9109619Z               "line": 314
2026-06-23T09:38:02.9109723Z             },
2026-06-23T09:38:02.9109823Z             {
2026-06-23T09:38:02.9109952Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9110052Z               "line": 9496
2026-06-23T09:38:02.9110142Z             }
2026-06-23T09:38:02.9110249Z           ]
2026-06-23T09:38:02.9110339Z         }
2026-06-23T09:38:02.9110443Z       }
2026-06-23T09:38:02.9110544Z     },
2026-06-23T09:38:02.9110635Z     {
2026-06-23T09:38:02.9110743Z       "id": "REQ-DAEMON-8",
2026-06-23T09:38:02.9111726Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-23T09:38:02.9111971Z       "requiredStages": [
2026-06-23T09:38:02.9112075Z         "impl",
2026-06-23T09:38:02.9112181Z         "unit"
2026-06-23T09:38:02.9112280Z       ],
2026-06-23T09:38:02.9112384Z       "stages": {
2026-06-23T09:38:02.9112586Z         "doc": {
2026-06-23T09:38:02.9112699Z           "complete": false,
2026-06-23T09:38:02.9112810Z           "evidence": []
2026-06-23T09:38:02.9112910Z         },
2026-06-23T09:38:02.9113019Z         "impl": {
2026-06-23T09:38:02.9113125Z           "complete": true,
2026-06-23T09:38:02.9113234Z           "evidence": [
2026-06-23T09:38:02.9113329Z             {
2026-06-23T09:38:02.9113464Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9113572Z               "line": 445
2026-06-23T09:38:02.9113672Z             },
2026-06-23T09:38:02.9113774Z             {
2026-06-23T09:38:02.9113915Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9114028Z               "line": 56
2026-06-23T09:38:02.9114130Z             }
2026-06-23T09:38:02.9114221Z           ]
2026-06-23T09:38:02.9114329Z         },
2026-06-23T09:38:02.9114430Z         "int": {
2026-06-23T09:38:02.9114540Z           "complete": false,
2026-06-23T09:38:02.9114649Z           "evidence": []
2026-06-23T09:38:02.9114741Z         },
2026-06-23T09:38:02.9114850Z         "unit": {
2026-06-23T09:38:02.9114963Z           "complete": true,
2026-06-23T09:38:02.9115070Z           "evidence": [
2026-06-23T09:38:02.9115164Z             {
2026-06-23T09:38:02.9115311Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9115423Z               "line": 288
2026-06-23T09:38:02.9115531Z             },
2026-06-23T09:38:02.9115631Z             {
2026-06-23T09:38:02.9115765Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-23T09:38:02.9115874Z               "line": 325
2026-06-23T09:38:02.9115980Z             }
2026-06-23T09:38:02.9116085Z           ]
2026-06-23T09:38:02.9116193Z         }
2026-06-23T09:38:02.9116288Z       }
2026-06-23T09:38:02.9116388Z     },
2026-06-23T09:38:02.9116486Z     {
2026-06-23T09:38:02.9116600Z       "id": "REQ-DAEMON-9",
2026-06-23T09:38:02.9119027Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-23T09:38:02.9119160Z       "requiredStages": [
2026-06-23T09:38:02.9119265Z         "impl",
2026-06-23T09:38:02.9119373Z         "unit"
2026-06-23T09:38:02.9119472Z       ],
2026-06-23T09:38:02.9119578Z       "stages": {
2026-06-23T09:38:02.9119682Z         "doc": {
2026-06-23T09:38:02.9119801Z           "complete": false,
2026-06-23T09:38:02.9119912Z           "evidence": []
2026-06-23T09:38:02.9120011Z         },
2026-06-23T09:38:02.9120116Z         "impl": {
2026-06-23T09:38:02.9120222Z           "complete": true,
2026-06-23T09:38:02.9120336Z           "evidence": [
2026-06-23T09:38:02.9120436Z             {
2026-06-23T09:38:02.9120584Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9120689Z               "line": 276
2026-06-23T09:38:02.9120784Z             },
2026-06-23T09:38:02.9120889Z             {
2026-06-23T09:38:02.9121032Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9121260Z               "line": 1294
2026-06-23T09:38:02.9121360Z             },
2026-06-23T09:38:02.9121462Z             {
2026-06-23T09:38:02.9121604Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9121722Z               "line": 197
2026-06-23T09:38:02.9121827Z             },
2026-06-23T09:38:02.9121920Z             {
2026-06-23T09:38:02.9122159Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9122254Z               "line": 344
2026-06-23T09:38:02.9122359Z             },
2026-06-23T09:38:02.9122460Z             {
2026-06-23T09:38:02.9122592Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9122702Z               "line": 381
2026-06-23T09:38:02.9122803Z             },
2026-06-23T09:38:02.9122893Z             {
2026-06-23T09:38:02.9123022Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9123127Z               "line": 2429
2026-06-23T09:38:02.9123232Z             }
2026-06-23T09:38:02.9123336Z           ]
2026-06-23T09:38:02.9123437Z         },
2026-06-23T09:38:02.9123542Z         "int": {
2026-06-23T09:38:02.9123656Z           "complete": false,
2026-06-23T09:38:02.9123757Z           "evidence": []
2026-06-23T09:38:02.9123866Z         },
2026-06-23T09:38:02.9123961Z         "unit": {
2026-06-23T09:38:02.9124067Z           "complete": true,
2026-06-23T09:38:02.9124175Z           "evidence": [
2026-06-23T09:38:02.9124272Z             {
2026-06-23T09:38:02.9124415Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9124513Z               "line": 1158
2026-06-23T09:38:02.9124618Z             },
2026-06-23T09:38:02.9124719Z             {
2026-06-23T09:38:02.9124832Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9124947Z               "line": 12118
2026-06-23T09:38:02.9125047Z             }
2026-06-23T09:38:02.9125152Z           ]
2026-06-23T09:38:02.9125252Z         }
2026-06-23T09:38:02.9125353Z       }
2026-06-23T09:38:02.9125448Z     },
2026-06-23T09:38:02.9125552Z     {
2026-06-23T09:38:02.9125663Z       "id": "REQ-DOCS-1",
2026-06-23T09:38:02.9125886Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-23T09:38:02.9126011Z       "requiredStages": [
2026-06-23T09:38:02.9126110Z         "doc",
2026-06-23T09:38:02.9126216Z         "impl"
2026-06-23T09:38:02.9126326Z       ],
2026-06-23T09:38:02.9126430Z       "stages": {
2026-06-23T09:38:02.9126535Z         "doc": {
2026-06-23T09:38:02.9126645Z           "complete": true,
2026-06-23T09:38:02.9126758Z           "evidence": [
2026-06-23T09:38:02.9126853Z             {
2026-06-23T09:38:02.9126981Z               "path": "docs-site/src/index.md",
2026-06-23T09:38:02.9127089Z               "line": 50
2026-06-23T09:38:02.9127190Z             }
2026-06-23T09:38:02.9127295Z           ]
2026-06-23T09:38:02.9127390Z         },
2026-06-23T09:38:02.9127499Z         "impl": {
2026-06-23T09:38:02.9127610Z           "complete": true,
2026-06-23T09:38:02.9127723Z           "evidence": [
2026-06-23T09:38:02.9127829Z             {
2026-06-23T09:38:02.9127972Z               "path": ".github/workflows/docs-publish.yml",
2026-06-23T09:38:02.9128081Z               "line": 12
2026-06-23T09:38:02.9128177Z             },
2026-06-23T09:38:02.9128277Z             {
2026-06-23T09:38:02.9128400Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:02.9128516Z               "line": 14
2026-06-23T09:38:02.9128625Z             }
2026-06-23T09:38:02.9128720Z           ]
2026-06-23T09:38:02.9128821Z         },
2026-06-23T09:38:02.9128925Z         "int": {
2026-06-23T09:38:02.9129117Z           "complete": false,
2026-06-23T09:38:02.9129230Z           "evidence": []
2026-06-23T09:38:02.9129335Z         },
2026-06-23T09:38:02.9129461Z         "unit": {
2026-06-23T09:38:02.9129568Z           "complete": false,
2026-06-23T09:38:02.9129677Z           "evidence": []
2026-06-23T09:38:02.9129778Z         }
2026-06-23T09:38:02.9129876Z       }
2026-06-23T09:38:02.9129975Z     },
2026-06-23T09:38:02.9130172Z     {
2026-06-23T09:38:02.9130276Z       "id": "REQ-DOCS-2",
2026-06-23T09:38:02.9130467Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-23T09:38:02.9130576Z       "requiredStages": [
2026-06-23T09:38:02.9130676Z         "doc",
2026-06-23T09:38:02.9130782Z         "int"
2026-06-23T09:38:02.9130886Z       ],
2026-06-23T09:38:02.9131087Z       "stages": {
2026-06-23T09:38:02.9131191Z         "doc": {
2026-06-23T09:38:02.9131306Z           "complete": true,
2026-06-23T09:38:02.9131416Z           "evidence": [
2026-06-23T09:38:02.9131520Z             {
2026-06-23T09:38:02.9131726Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-23T09:38:02.9131830Z               "line": 3
2026-06-23T09:38:02.9131930Z             },
2026-06-23T09:38:02.9132032Z             {
2026-06-23T09:38:02.9132178Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-23T09:38:02.9132287Z               "line": 3
2026-06-23T09:38:02.9132392Z             },
2026-06-23T09:38:02.9132500Z             {
2026-06-23T09:38:02.9132647Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-23T09:38:02.9132753Z               "line": 3
2026-06-23T09:38:02.9132861Z             }
2026-06-23T09:38:02.9132957Z           ]
2026-06-23T09:38:02.9133058Z         },
2026-06-23T09:38:02.9133162Z         "impl": {
2026-06-23T09:38:02.9133292Z           "complete": false,
2026-06-23T09:38:02.9133401Z           "evidence": []
2026-06-23T09:38:02.9133500Z         },
2026-06-23T09:38:02.9133597Z         "int": {
2026-06-23T09:38:02.9133706Z           "complete": true,
2026-06-23T09:38:02.9133820Z           "evidence": [
2026-06-23T09:38:02.9133936Z             {
2026-06-23T09:38:02.9134102Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-23T09:38:02.9134207Z               "line": 14
2026-06-23T09:38:02.9134312Z             }
2026-06-23T09:38:02.9134416Z           ]
2026-06-23T09:38:02.9134512Z         },
2026-06-23T09:38:02.9134622Z         "unit": {
2026-06-23T09:38:02.9134721Z           "complete": false,
2026-06-23T09:38:02.9134837Z           "evidence": []
2026-06-23T09:38:02.9134932Z         }
2026-06-23T09:38:02.9135035Z       }
2026-06-23T09:38:02.9135144Z     },
2026-06-23T09:38:02.9135235Z     {
2026-06-23T09:38:02.9135355Z       "id": "REQ-DOCS-3",
2026-06-23T09:38:02.9135570Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-23T09:38:02.9135684Z       "requiredStages": [
2026-06-23T09:38:02.9135788Z         "doc"
2026-06-23T09:38:02.9135889Z       ],
2026-06-23T09:38:02.9135994Z       "stages": {
2026-06-23T09:38:02.9136103Z         "doc": {
2026-06-23T09:38:02.9136218Z           "complete": true,
2026-06-23T09:38:02.9136323Z           "evidence": [
2026-06-23T09:38:02.9136432Z             {
2026-06-23T09:38:02.9136562Z               "path": "docs-site/src/index.md",
2026-06-23T09:38:02.9136666Z               "line": 42
2026-06-23T09:38:02.9136776Z             }
2026-06-23T09:38:02.9136876Z           ]
2026-06-23T09:38:02.9136995Z         },
2026-06-23T09:38:02.9137095Z         "impl": {
2026-06-23T09:38:02.9137210Z           "complete": false,
2026-06-23T09:38:02.9137318Z           "evidence": []
2026-06-23T09:38:02.9137423Z         },
2026-06-23T09:38:02.9137518Z         "int": {
2026-06-23T09:38:02.9137616Z           "complete": false,
2026-06-23T09:38:02.9137730Z           "evidence": []
2026-06-23T09:38:02.9137826Z         },
2026-06-23T09:38:02.9137931Z         "unit": {
2026-06-23T09:38:02.9138040Z           "complete": false,
2026-06-23T09:38:02.9138151Z           "evidence": []
2026-06-23T09:38:02.9138250Z         }
2026-06-23T09:38:02.9138350Z       }
2026-06-23T09:38:02.9138452Z     },
2026-06-23T09:38:02.9138551Z     {
2026-06-23T09:38:02.9138665Z       "id": "REQ-DOCS-4",
2026-06-23T09:38:02.9138880Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-23T09:38:02.9139066Z       "requiredStages": [
2026-06-23T09:38:02.9139170Z         "doc",
2026-06-23T09:38:02.9139386Z         "impl",
2026-06-23T09:38:02.9139494Z         "unit"
2026-06-23T09:38:02.9139585Z       ],
2026-06-23T09:38:02.9139691Z       "stages": {
2026-06-23T09:38:02.9139795Z         "doc": {
2026-06-23T09:38:02.9139905Z           "complete": true,
2026-06-23T09:38:02.9140011Z           "evidence": [
2026-06-23T09:38:02.9140115Z             {
2026-06-23T09:38:02.9140366Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-23T09:38:02.9140469Z               "line": 35
2026-06-23T09:38:02.9140578Z             }
2026-06-23T09:38:02.9140665Z           ]
2026-06-23T09:38:02.9140761Z         },
2026-06-23T09:38:02.9140864Z         "impl": {
2026-06-23T09:38:02.9140980Z           "complete": true,
2026-06-23T09:38:02.9141080Z           "evidence": [
2026-06-23T09:38:02.9141184Z             {
2026-06-23T09:38:02.9141333Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.9141432Z               "line": 793
2026-06-23T09:38:02.9141541Z             },
2026-06-23T09:38:02.9141652Z             {
2026-06-23T09:38:02.9141775Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:02.9141880Z               "line": 15
2026-06-23T09:38:02.9141981Z             }
2026-06-23T09:38:02.9142080Z           ]
2026-06-23T09:38:02.9142180Z         },
2026-06-23T09:38:02.9142287Z         "int": {
2026-06-23T09:38:02.9142395Z           "complete": false,
2026-06-23T09:38:02.9142505Z           "evidence": []
2026-06-23T09:38:02.9142606Z         },
2026-06-23T09:38:02.9142705Z         "unit": {
2026-06-23T09:38:02.9142818Z           "complete": true,
2026-06-23T09:38:02.9142928Z           "evidence": [
2026-06-23T09:38:02.9143022Z             {
2026-06-23T09:38:02.9143164Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.9143275Z               "line": 1729
2026-06-23T09:38:02.9143379Z             }
2026-06-23T09:38:02.9143479Z           ]
2026-06-23T09:38:02.9143575Z         }
2026-06-23T09:38:02.9143670Z       }
2026-06-23T09:38:02.9143764Z     },
2026-06-23T09:38:02.9143862Z     {
2026-06-23T09:38:02.9143971Z       "id": "REQ-DOCS-5",
2026-06-23T09:38:02.9144191Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-23T09:38:02.9144299Z       "requiredStages": [
2026-06-23T09:38:02.9144404Z         "impl",
2026-06-23T09:38:02.9144491Z         "int"
2026-06-23T09:38:02.9144600Z       ],
2026-06-23T09:38:02.9144705Z       "stages": {
2026-06-23T09:38:02.9144811Z         "doc": {
2026-06-23T09:38:02.9144919Z           "complete": false,
2026-06-23T09:38:02.9145029Z           "evidence": []
2026-06-23T09:38:02.9145125Z         },
2026-06-23T09:38:02.9145224Z         "impl": {
2026-06-23T09:38:02.9145344Z           "complete": true,
2026-06-23T09:38:02.9145445Z           "evidence": [
2026-06-23T09:38:02.9145553Z             {
2026-06-23T09:38:02.9145700Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.9145805Z               "line": 794
2026-06-23T09:38:02.9145910Z             },
2026-06-23T09:38:02.9146014Z             {
2026-06-23T09:38:02.9146144Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:02.9146253Z               "line": 114
2026-06-23T09:38:02.9146358Z             }
2026-06-23T09:38:02.9146464Z           ]
2026-06-23T09:38:02.9146559Z         },
2026-06-23T09:38:02.9146658Z         "int": {
2026-06-23T09:38:02.9146769Z           "complete": true,
2026-06-23T09:38:02.9146883Z           "evidence": [
2026-06-23T09:38:02.9146982Z             {
2026-06-23T09:38:02.9147122Z               "path": ".github/workflows/ci.yml",
2026-06-23T09:38:02.9147236Z               "line": 198
2026-06-23T09:38:02.9147331Z             },
2026-06-23T09:38:02.9147422Z             {
2026-06-23T09:38:02.9147565Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:02.9147675Z               "line": 1766
2026-06-23T09:38:02.9147775Z             }
2026-06-23T09:38:02.9147883Z           ]
2026-06-23T09:38:02.9147988Z         },
2026-06-23T09:38:02.9148092Z         "unit": {
2026-06-23T09:38:02.9148280Z           "complete": false,
2026-06-23T09:38:02.9148387Z           "evidence": []
2026-06-23T09:38:02.9148491Z         }
2026-06-23T09:38:02.9148581Z       }
2026-06-23T09:38:02.9148692Z     },
2026-06-23T09:38:02.9148792Z     {
2026-06-23T09:38:02.9148891Z       "id": "REQ-DOCS-6",
2026-06-23T09:38:02.9149321Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-23T09:38:02.9149540Z       "requiredStages": [
2026-06-23T09:38:02.9149650Z         "impl",
2026-06-23T09:38:02.9149760Z         "unit",
2026-06-23T09:38:02.9149864Z         "int"
2026-06-23T09:38:02.9149970Z       ],
2026-06-23T09:38:02.9150064Z       "stages": {
2026-06-23T09:38:02.9150169Z         "doc": {
2026-06-23T09:38:02.9150280Z           "complete": true,
2026-06-23T09:38:02.9150393Z           "evidence": [
2026-06-23T09:38:02.9150489Z             {
2026-06-23T09:38:02.9152964Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-23T09:38:02.9153123Z               "line": 4
2026-06-23T09:38:02.9153227Z             }
2026-06-23T09:38:02.9153331Z           ]
2026-06-23T09:38:02.9153422Z         },
2026-06-23T09:38:02.9153531Z         "impl": {
2026-06-23T09:38:02.9153639Z           "complete": true,
2026-06-23T09:38:02.9153744Z           "evidence": [
2026-06-23T09:38:02.9153849Z             {
2026-06-23T09:38:02.9153982Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9154092Z               "line": 5895
2026-06-23T09:38:02.9154192Z             }
2026-06-23T09:38:02.9154292Z           ]
2026-06-23T09:38:02.9154392Z         },
2026-06-23T09:38:02.9154492Z         "int": {
2026-06-23T09:38:02.9154606Z           "complete": true,
2026-06-23T09:38:02.9154712Z           "evidence": [
2026-06-23T09:38:02.9154817Z             {
2026-06-23T09:38:02.9154969Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-23T09:38:02.9155075Z               "line": 39
2026-06-23T09:38:02.9155179Z             }
2026-06-23T09:38:02.9155279Z           ]
2026-06-23T09:38:02.9155399Z         },
2026-06-23T09:38:02.9155498Z         "unit": {
2026-06-23T09:38:02.9155608Z           "complete": true,
2026-06-23T09:38:02.9155724Z           "evidence": [
2026-06-23T09:38:02.9155827Z             {
2026-06-23T09:38:02.9155957Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9156071Z               "line": 12280
2026-06-23T09:38:02.9156179Z             }
2026-06-23T09:38:02.9156279Z           ]
2026-06-23T09:38:02.9156380Z         }
2026-06-23T09:38:02.9156475Z       }
2026-06-23T09:38:02.9156574Z     },
2026-06-23T09:38:02.9156671Z     {
2026-06-23T09:38:02.9156813Z       "id": "REQ-DOCS-NO-INTERNAL-CODES",
2026-06-23T09:38:02.9158567Z       "title": "Public CLI --help (the clap `///` doc-comments) and the generated `docs-site/src/cli/reference.md` MUST NOT contain internal tracker/decision codes — `REQ-*`, `F-###`, `M#-W#`, `ADR-####`. They are meaningless to an end user reading --help and ship to GH-Pages. A CI-gated scan (the `xtask check` docs gate) fails on any such token in the GENERATED reference.md (which by construction contains only clap help, so rustdoc `///` on fns/structs is OUT of scope and keeps its REQ/ADR cross-refs). Substance is kept; codes are rewritten to plain language. (v0.13.2 W6)",
2026-06-23T09:38:02.9158694Z       "requiredStages": [
2026-06-23T09:38:02.9158807Z         "doc",
2026-06-23T09:38:02.9158913Z         "impl",
2026-06-23T09:38:02.9159089Z         "unit"
2026-06-23T09:38:02.9159189Z       ],
2026-06-23T09:38:02.9159290Z       "stages": {
2026-06-23T09:38:02.9159399Z         "doc": {
2026-06-23T09:38:02.9159509Z           "complete": true,
2026-06-23T09:38:02.9159619Z           "evidence": [
2026-06-23T09:38:02.9159723Z             {
2026-06-23T09:38:02.9159858Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-23T09:38:02.9159966Z               "line": 59
2026-06-23T09:38:02.9160066Z             }
2026-06-23T09:38:02.9160168Z           ]
2026-06-23T09:38:02.9160405Z         },
2026-06-23T09:38:02.9160511Z         "impl": {
2026-06-23T09:38:02.9160615Z           "complete": true,
2026-06-23T09:38:02.9160719Z           "evidence": [
2026-06-23T09:38:02.9160826Z             {
2026-06-23T09:38:02.9160962Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:02.9161069Z               "line": 200
2026-06-23T09:38:02.9161254Z             },
2026-06-23T09:38:02.9161348Z             {
2026-06-23T09:38:02.9161477Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:02.9161576Z               "line": 254
2026-06-23T09:38:02.9161675Z             }
2026-06-23T09:38:02.9161771Z           ]
2026-06-23T09:38:02.9161871Z         },
2026-06-23T09:38:02.9161975Z         "int": {
2026-06-23T09:38:02.9162085Z           "complete": false,
2026-06-23T09:38:02.9162195Z           "evidence": []
2026-06-23T09:38:02.9162294Z         },
2026-06-23T09:38:02.9162396Z         "unit": {
2026-06-23T09:38:02.9162505Z           "complete": true,
2026-06-23T09:38:02.9162618Z           "evidence": [
2026-06-23T09:38:02.9162720Z             {
2026-06-23T09:38:02.9162852Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:02.9162957Z               "line": 1398
2026-06-23T09:38:02.9163049Z             },
2026-06-23T09:38:02.9163144Z             {
2026-06-23T09:38:02.9163262Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:02.9163378Z               "line": 1419
2026-06-23T09:38:02.9163477Z             }
2026-06-23T09:38:02.9163577Z           ]
2026-06-23T09:38:02.9163679Z         }
2026-06-23T09:38:02.9163769Z       }
2026-06-23T09:38:02.9163877Z     },
2026-06-23T09:38:02.9163967Z     {
2026-06-23T09:38:02.9164086Z       "id": "REQ-ELEVATE-1",
2026-06-23T09:38:02.9167250Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-23T09:38:02.9167402Z       "requiredStages": [
2026-06-23T09:38:02.9167507Z         "doc",
2026-06-23T09:38:02.9167617Z         "impl",
2026-06-23T09:38:02.9167721Z         "unit"
2026-06-23T09:38:02.9167817Z       ],
2026-06-23T09:38:02.9167922Z       "stages": {
2026-06-23T09:38:02.9168027Z         "doc": {
2026-06-23T09:38:02.9168127Z           "complete": true,
2026-06-23T09:38:02.9168237Z           "evidence": [
2026-06-23T09:38:02.9168342Z             {
2026-06-23T09:38:02.9168461Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.9168566Z               "line": 705
2026-06-23T09:38:02.9168665Z             }
2026-06-23T09:38:02.9168771Z           ]
2026-06-23T09:38:02.9168871Z         },
2026-06-23T09:38:02.9169056Z         "impl": {
2026-06-23T09:38:02.9169170Z           "complete": true,
2026-06-23T09:38:02.9169268Z           "evidence": [
2026-06-23T09:38:02.9169372Z             {
2026-06-23T09:38:02.9169497Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9169607Z               "line": 4227
2026-06-23T09:38:02.9169706Z             },
2026-06-23T09:38:02.9169812Z             {
2026-06-23T09:38:02.9169940Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9170040Z               "line": 4272
2026-06-23T09:38:02.9170255Z             },
2026-06-23T09:38:02.9170340Z             {
2026-06-23T09:38:02.9170465Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9170565Z               "line": 4334
2026-06-23T09:38:02.9170665Z             },
2026-06-23T09:38:02.9170770Z             {
2026-06-23T09:38:02.9170908Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9171105Z               "line": 92
2026-06-23T09:38:02.9171203Z             },
2026-06-23T09:38:02.9171304Z             {
2026-06-23T09:38:02.9171429Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9171537Z               "line": 148
2026-06-23T09:38:02.9171639Z             }
2026-06-23T09:38:02.9171734Z           ]
2026-06-23T09:38:02.9171838Z         },
2026-06-23T09:38:02.9171937Z         "int": {
2026-06-23T09:38:02.9172046Z           "complete": false,
2026-06-23T09:38:02.9172154Z           "evidence": []
2026-06-23T09:38:02.9172259Z         },
2026-06-23T09:38:02.9172364Z         "unit": {
2026-06-23T09:38:02.9172469Z           "complete": true,
2026-06-23T09:38:02.9172578Z           "evidence": [
2026-06-23T09:38:02.9172679Z             {
2026-06-23T09:38:02.9172808Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9172912Z               "line": 442
2026-06-23T09:38:02.9173018Z             },
2026-06-23T09:38:02.9173118Z             {
2026-06-23T09:38:02.9173255Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9173352Z               "line": 460
2026-06-23T09:38:02.9173437Z             }
2026-06-23T09:38:02.9173542Z           ]
2026-06-23T09:38:02.9173633Z         }
2026-06-23T09:38:02.9173732Z       }
2026-06-23T09:38:02.9173837Z     },
2026-06-23T09:38:02.9173924Z     {
2026-06-23T09:38:02.9174052Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-23T09:38:02.9175852Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-23T09:38:02.9175984Z       "requiredStages": [
2026-06-23T09:38:02.9176084Z         "doc",
2026-06-23T09:38:02.9176186Z         "impl",
2026-06-23T09:38:02.9176289Z         "unit"
2026-06-23T09:38:02.9176389Z       ],
2026-06-23T09:38:02.9176500Z       "stages": {
2026-06-23T09:38:02.9176604Z         "doc": {
2026-06-23T09:38:02.9176714Z           "complete": true,
2026-06-23T09:38:02.9176815Z           "evidence": [
2026-06-23T09:38:02.9176905Z             {
2026-06-23T09:38:02.9177014Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.9177125Z               "line": 732
2026-06-23T09:38:02.9177229Z             }
2026-06-23T09:38:02.9177333Z           ]
2026-06-23T09:38:02.9177438Z         },
2026-06-23T09:38:02.9177558Z         "impl": {
2026-06-23T09:38:02.9177666Z           "complete": true,
2026-06-23T09:38:02.9177776Z           "evidence": [
2026-06-23T09:38:02.9177877Z             {
2026-06-23T09:38:02.9178005Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9178106Z               "line": 2070
2026-06-23T09:38:02.9178196Z             },
2026-06-23T09:38:02.9178291Z             {
2026-06-23T09:38:02.9178411Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9178516Z               "line": 3775
2026-06-23T09:38:02.9178615Z             },
2026-06-23T09:38:02.9178716Z             {
2026-06-23T09:38:02.9178839Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9179026Z               "line": 3784
2026-06-23T09:38:02.9179117Z             }
2026-06-23T09:38:02.9179211Z           ]
2026-06-23T09:38:02.9179418Z         },
2026-06-23T09:38:02.9179511Z         "int": {
2026-06-23T09:38:02.9179630Z           "complete": false,
2026-06-23T09:38:02.9179735Z           "evidence": []
2026-06-23T09:38:02.9179833Z         },
2026-06-23T09:38:02.9179923Z         "unit": {
2026-06-23T09:38:02.9180029Z           "complete": true,
2026-06-23T09:38:02.9180134Z           "evidence": [
2026-06-23T09:38:02.9180358Z             {
2026-06-23T09:38:02.9180491Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9180600Z               "line": 9327
2026-06-23T09:38:02.9180696Z             },
2026-06-23T09:38:02.9180801Z             {
2026-06-23T09:38:02.9180930Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9181039Z               "line": 9385
2026-06-23T09:38:02.9181134Z             }
2026-06-23T09:38:02.9181239Z           ]
2026-06-23T09:38:02.9181340Z         }
2026-06-23T09:38:02.9181435Z       }
2026-06-23T09:38:02.9181539Z     },
2026-06-23T09:38:02.9181636Z     {
2026-06-23T09:38:02.9181764Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-23T09:38:02.9186520Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-23T09:38:02.9186669Z       "requiredStages": [
2026-06-23T09:38:02.9186770Z         "doc",
2026-06-23T09:38:02.9186864Z         "impl",
2026-06-23T09:38:02.9186969Z         "unit",
2026-06-23T09:38:02.9187070Z         "int"
2026-06-23T09:38:02.9187174Z       ],
2026-06-23T09:38:02.9187279Z       "stages": {
2026-06-23T09:38:02.9187375Z         "doc": {
2026-06-23T09:38:02.9187498Z           "complete": true,
2026-06-23T09:38:02.9187613Z           "evidence": [
2026-06-23T09:38:02.9187709Z             {
2026-06-23T09:38:02.9187822Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.9187926Z               "line": 172
2026-06-23T09:38:02.9188031Z             }
2026-06-23T09:38:02.9188128Z           ]
2026-06-23T09:38:02.9188231Z         },
2026-06-23T09:38:02.9188336Z         "impl": {
2026-06-23T09:38:02.9188447Z           "complete": true,
2026-06-23T09:38:02.9188555Z           "evidence": [
2026-06-23T09:38:02.9188657Z             {
2026-06-23T09:38:02.9188813Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T09:38:02.9188923Z               "line": 105
2026-06-23T09:38:02.9189114Z             },
2026-06-23T09:38:02.9189214Z             {
2026-06-23T09:38:02.9189353Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9189457Z               "line": 8284
2026-06-23T09:38:02.9189552Z             }
2026-06-23T09:38:02.9189649Z           ]
2026-06-23T09:38:02.9189858Z         },
2026-06-23T09:38:02.9189964Z         "int": {
2026-06-23T09:38:02.9190071Z           "complete": true,
2026-06-23T09:38:02.9190180Z           "evidence": [
2026-06-23T09:38:02.9190281Z             {
2026-06-23T09:38:02.9190412Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9190521Z               "line": 8761
2026-06-23T09:38:02.9190627Z             }
2026-06-23T09:38:02.9190821Z           ]
2026-06-23T09:38:02.9190918Z         },
2026-06-23T09:38:02.9191018Z         "unit": {
2026-06-23T09:38:02.9191127Z           "complete": true,
2026-06-23T09:38:02.9191233Z           "evidence": [
2026-06-23T09:38:02.9191338Z             {
2026-06-23T09:38:02.9191460Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9191571Z               "line": 8732
2026-06-23T09:38:02.9191666Z             }
2026-06-23T09:38:02.9191775Z           ]
2026-06-23T09:38:02.9191872Z         }
2026-06-23T09:38:02.9191971Z       }
2026-06-23T09:38:02.9192067Z     },
2026-06-23T09:38:02.9192158Z     {
2026-06-23T09:38:02.9192295Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-23T09:38:02.9193632Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-23T09:38:02.9193761Z       "requiredStages": [
2026-06-23T09:38:02.9193876Z         "impl",
2026-06-23T09:38:02.9193975Z         "unit"
2026-06-23T09:38:02.9194076Z       ],
2026-06-23T09:38:02.9194181Z       "stages": {
2026-06-23T09:38:02.9194285Z         "doc": {
2026-06-23T09:38:02.9194395Z           "complete": false,
2026-06-23T09:38:02.9194505Z           "evidence": []
2026-06-23T09:38:02.9194605Z         },
2026-06-23T09:38:02.9194705Z         "impl": {
2026-06-23T09:38:02.9194829Z           "complete": true,
2026-06-23T09:38:02.9194934Z           "evidence": [
2026-06-23T09:38:02.9195035Z             {
2026-06-23T09:38:02.9195158Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9195263Z               "line": 3820
2026-06-23T09:38:02.9195369Z             }
2026-06-23T09:38:02.9195468Z           ]
2026-06-23T09:38:02.9195567Z         },
2026-06-23T09:38:02.9195667Z         "int": {
2026-06-23T09:38:02.9195781Z           "complete": false,
2026-06-23T09:38:02.9195879Z           "evidence": []
2026-06-23T09:38:02.9195979Z         },
2026-06-23T09:38:02.9196076Z         "unit": {
2026-06-23T09:38:02.9196185Z           "complete": true,
2026-06-23T09:38:02.9196298Z           "evidence": [
2026-06-23T09:38:02.9196395Z             {
2026-06-23T09:38:02.9196518Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9196623Z               "line": 8708
2026-06-23T09:38:02.9196729Z             }
2026-06-23T09:38:02.9196824Z           ]
2026-06-23T09:38:02.9196928Z         }
2026-06-23T09:38:02.9197034Z       }
2026-06-23T09:38:02.9197129Z     },
2026-06-23T09:38:02.9197234Z     {
2026-06-23T09:38:02.9197363Z       "id": "REQ-ENDPOINT-UNBOUND-ATTACH",
2026-06-23T09:38:02.9200084Z       "title": "An spt-hosted endpoint is ATTACHABLE between spawn and bind: gate the attach on the broker SESSION being attachable (session+PTY+OutputLog exist at spawn, before bind), not on perch STATUS_ONLINE (bind). cmd_endpoint_run + `spt rc <id>` attach to a live broker session regardless of perch status (headless bringups too; lets an operator clear a bind-gating prompt) -- replaces await_endpoint_online; preserves REQ-HAZARD-RC-ATTACH-ONLINE-RACE's 'no attach before a session' intent at the earlier session-exists point; source = the broker sessions map (ADR-0025 W3a); local-only. New on-disk status STATUS_UNBOUND (spawn->unbound, bind->online, death->offline); lifecycle reuses the existing exit-waiter/reconcile (session death->offline); unbound is attachable but NOT message-addressable (messaging stays online/bound-gated). EpDisplay gains Unbound = HOLLOW (+ hollow-controlled variant) -- amber=HarnessOnly is taken + means not-controllable (the opposite of attachable). (ADR-0027)",
2026-06-23T09:38:02.9200312Z       "requiredStages": [
2026-06-23T09:38:02.9200418Z         "doc",
2026-06-23T09:38:02.9200519Z         "impl",
2026-06-23T09:38:02.9200726Z         "unit",
2026-06-23T09:38:02.9200817Z         "int"
2026-06-23T09:38:02.9200911Z       ],
2026-06-23T09:38:02.9201010Z       "stages": {
2026-06-23T09:38:02.9201120Z         "doc": {
2026-06-23T09:38:02.9201226Z           "complete": true,
2026-06-23T09:38:02.9201329Z           "evidence": [
2026-06-23T09:38:02.9201430Z             {
2026-06-23T09:38:02.9201535Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.9201644Z               "line": 602
2026-06-23T09:38:02.9201745Z             },
2026-06-23T09:38:02.9201850Z             {
2026-06-23T09:38:02.9202084Z               "path": "docs/adr/0027-unbound-endpoint-state-and-attach-on-session.md",
2026-06-23T09:38:02.9202193Z               "line": 3
2026-06-23T09:38:02.9202292Z             }
2026-06-23T09:38:02.9202394Z           ]
2026-06-23T09:38:02.9202493Z         },
2026-06-23T09:38:02.9202593Z         "impl": {
2026-06-23T09:38:02.9202699Z           "complete": true,
2026-06-23T09:38:02.9202813Z           "evidence": [
2026-06-23T09:38:02.9202918Z             {
2026-06-23T09:38:02.9203062Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9203160Z               "line": 537
2026-06-23T09:38:02.9203266Z             },
2026-06-23T09:38:02.9203362Z             {
2026-06-23T09:38:02.9203508Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9203617Z               "line": 544
2026-06-23T09:38:02.9203723Z             },
2026-06-23T09:38:02.9203825Z             {
2026-06-23T09:38:02.9203968Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9204078Z               "line": 45
2026-06-23T09:38:02.9204178Z             },
2026-06-23T09:38:02.9204273Z             {
2026-06-23T09:38:02.9204421Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9204526Z               "line": 80
2026-06-23T09:38:02.9204631Z             },
2026-06-23T09:38:02.9204731Z             {
2026-06-23T09:38:02.9204869Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9204975Z               "line": 118
2026-06-23T09:38:02.9205079Z             },
2026-06-23T09:38:02.9205184Z             {
2026-06-23T09:38:02.9205305Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9205418Z               "line": 1769
2026-06-23T09:38:02.9205518Z             },
2026-06-23T09:38:02.9205624Z             {
2026-06-23T09:38:02.9205756Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9205861Z               "line": 1790
2026-06-23T09:38:02.9205967Z             },
2026-06-23T09:38:02.9206066Z             {
2026-06-23T09:38:02.9206203Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:02.9206313Z               "line": 151
2026-06-23T09:38:02.9206406Z             },
2026-06-23T09:38:02.9206501Z             {
2026-06-23T09:38:02.9206636Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:02.9206740Z               "line": 173
2026-06-23T09:38:02.9206845Z             },
2026-06-23T09:38:02.9206946Z             {
2026-06-23T09:38:02.9207069Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9207174Z               "line": 542
2026-06-23T09:38:02.9207279Z             },
2026-06-23T09:38:02.9207379Z             {
2026-06-23T09:38:02.9207508Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9207613Z               "line": 555
2026-06-23T09:38:02.9207713Z             },
2026-06-23T09:38:02.9207813Z             {
2026-06-23T09:38:02.9207937Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9208046Z               "line": 752
2026-06-23T09:38:02.9208147Z             },
2026-06-23T09:38:02.9208337Z             {
2026-06-23T09:38:02.9208457Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9208571Z               "line": 804
2026-06-23T09:38:02.9208666Z             }
2026-06-23T09:38:02.9208762Z           ]
2026-06-23T09:38:02.9208868Z         },
2026-06-23T09:38:02.9209046Z         "int": {
2026-06-23T09:38:02.9209156Z           "complete": true,
2026-06-23T09:38:02.9209366Z           "evidence": [
2026-06-23T09:38:02.9209471Z             {
2026-06-23T09:38:02.9209600Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:02.9209709Z               "line": 426
2026-06-23T09:38:02.9209815Z             },
2026-06-23T09:38:02.9209911Z             {
2026-06-23T09:38:02.9210077Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T09:38:02.9210182Z               "line": 333
2026-06-23T09:38:02.9210277Z             }
2026-06-23T09:38:02.9210367Z           ]
2026-06-23T09:38:02.9210473Z         },
2026-06-23T09:38:02.9210587Z         "unit": {
2026-06-23T09:38:02.9210692Z           "complete": true,
2026-06-23T09:38:02.9210802Z           "evidence": [
2026-06-23T09:38:02.9210901Z             {
2026-06-23T09:38:02.9211050Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9211154Z               "line": 1033
2026-06-23T09:38:02.9211258Z             },
2026-06-23T09:38:02.9211363Z             {
2026-06-23T09:38:02.9211509Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9211622Z               "line": 224
2026-06-23T09:38:02.9211723Z             },
2026-06-23T09:38:02.9211828Z             {
2026-06-23T09:38:02.9211966Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9212081Z               "line": 262
2026-06-23T09:38:02.9212185Z             },
2026-06-23T09:38:02.9212280Z             {
2026-06-23T09:38:02.9212405Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9212514Z               "line": 9351
2026-06-23T09:38:02.9212625Z             },
2026-06-23T09:38:02.9212725Z             {
2026-06-23T09:38:02.9212848Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9212959Z               "line": 9563
2026-06-23T09:38:02.9213058Z             },
2026-06-23T09:38:02.9213163Z             {
2026-06-23T09:38:02.9213293Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:02.9213406Z               "line": 395
2026-06-23T09:38:02.9213496Z             },
2026-06-23T09:38:02.9213603Z             {
2026-06-23T09:38:02.9213744Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:02.9213850Z               "line": 957
2026-06-23T09:38:02.9213956Z             },
2026-06-23T09:38:02.9214045Z             {
2026-06-23T09:38:02.9214182Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:02.9214292Z               "line": 509
2026-06-23T09:38:02.9214381Z             }
2026-06-23T09:38:02.9214485Z           ]
2026-06-23T09:38:02.9214576Z         }
2026-06-23T09:38:02.9214672Z       }
2026-06-23T09:38:02.9214776Z     },
2026-06-23T09:38:02.9214876Z     {
2026-06-23T09:38:02.9214981Z       "id": "REQ-EP-1",
2026-06-23T09:38:02.9215133Z       "title": "Day-one endpoint types; open type system",
2026-06-23T09:38:02.9215244Z       "requiredStages": [
2026-06-23T09:38:02.9215344Z         "impl",
2026-06-23T09:38:02.9215448Z         "unit"
2026-06-23T09:38:02.9215554Z       ],
2026-06-23T09:38:02.9215663Z       "stages": {
2026-06-23T09:38:02.9215763Z         "doc": {
2026-06-23T09:38:02.9215869Z           "complete": false,
2026-06-23T09:38:02.9215973Z           "evidence": []
2026-06-23T09:38:02.9216073Z         },
2026-06-23T09:38:02.9216179Z         "impl": {
2026-06-23T09:38:02.9216292Z           "complete": true,
2026-06-23T09:38:02.9216402Z           "evidence": [
2026-06-23T09:38:02.9216499Z             {
2026-06-23T09:38:02.9216645Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9216753Z               "line": 77
2026-06-23T09:38:02.9216854Z             },
2026-06-23T09:38:02.9217066Z             {
2026-06-23T09:38:02.9217201Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9217310Z               "line": 94
2026-06-23T09:38:02.9217414Z             }
2026-06-23T09:38:02.9217510Z           ]
2026-06-23T09:38:02.9217615Z         },
2026-06-23T09:38:02.9217714Z         "int": {
2026-06-23T09:38:02.9217896Z           "complete": false,
2026-06-23T09:38:02.9218000Z           "evidence": []
2026-06-23T09:38:02.9218107Z         },
2026-06-23T09:38:02.9218211Z         "unit": {
2026-06-23T09:38:02.9218315Z           "complete": true,
2026-06-23T09:38:02.9218427Z           "evidence": [
2026-06-23T09:38:02.9218521Z             {
2026-06-23T09:38:02.9218663Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9218769Z               "line": 161
2026-06-23T09:38:02.9218878Z             },
2026-06-23T09:38:02.9219056Z             {
2026-06-23T09:38:02.9219202Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9219313Z               "line": 178
2026-06-23T09:38:02.9219413Z             }
2026-06-23T09:38:02.9219512Z           ]
2026-06-23T09:38:02.9219606Z         }
2026-06-23T09:38:02.9219712Z       }
2026-06-23T09:38:02.9219813Z     },
2026-06-23T09:38:02.9219906Z     {
2026-06-23T09:38:02.9220017Z       "id": "REQ-EP-2",
2026-06-23T09:38:02.9220203Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-23T09:38:02.9220323Z       "requiredStages": [
2026-06-23T09:38:02.9220423Z         "impl",
2026-06-23T09:38:02.9220527Z         "unit"
2026-06-23T09:38:02.9220617Z       ],
2026-06-23T09:38:02.9220723Z       "stages": {
2026-06-23T09:38:02.9220828Z         "doc": {
2026-06-23T09:38:02.9220928Z           "complete": false,
2026-06-23T09:38:02.9221038Z           "evidence": []
2026-06-23T09:38:02.9221138Z         },
2026-06-23T09:38:02.9221247Z         "impl": {
2026-06-23T09:38:02.9221353Z           "complete": true,
2026-06-23T09:38:02.9221466Z           "evidence": [
2026-06-23T09:38:02.9221571Z             {
2026-06-23T09:38:02.9221710Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9221823Z               "line": 114
2026-06-23T09:38:02.9221923Z             },
2026-06-23T09:38:02.9222018Z             {
2026-06-23T09:38:02.9222154Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9222255Z               "line": 131
2026-06-23T09:38:02.9222361Z             },
2026-06-23T09:38:02.9222454Z             {
2026-06-23T09:38:02.9222603Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9222708Z               "line": 138
2026-06-23T09:38:02.9222812Z             }
2026-06-23T09:38:02.9222918Z           ]
2026-06-23T09:38:02.9223008Z         },
2026-06-23T09:38:02.9223122Z         "int": {
2026-06-23T09:38:02.9223218Z           "complete": false,
2026-06-23T09:38:02.9223327Z           "evidence": []
2026-06-23T09:38:02.9223417Z         },
2026-06-23T09:38:02.9223524Z         "unit": {
2026-06-23T09:38:02.9223637Z           "complete": true,
2026-06-23T09:38:02.9223751Z           "evidence": [
2026-06-23T09:38:02.9223858Z             {
2026-06-23T09:38:02.9223999Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9224110Z               "line": 190
2026-06-23T09:38:02.9224211Z             },
2026-06-23T09:38:02.9224309Z             {
2026-06-23T09:38:02.9224459Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9224564Z               "line": 208
2026-06-23T09:38:02.9224671Z             },
2026-06-23T09:38:02.9224766Z             {
2026-06-23T09:38:02.9224904Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-23T09:38:02.9225012Z               "line": 221
2026-06-23T09:38:02.9225112Z             }
2026-06-23T09:38:02.9225213Z           ]
2026-06-23T09:38:02.9225307Z         }
2026-06-23T09:38:02.9225402Z       }
2026-06-23T09:38:02.9225504Z     },
2026-06-23T09:38:02.9225603Z     {
2026-06-23T09:38:02.9225708Z       "id": "REQ-EP-3",
2026-06-23T09:38:02.9226027Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-23T09:38:02.9226138Z       "requiredStages": [
2026-06-23T09:38:02.9226243Z         "impl",
2026-06-23T09:38:02.9226352Z         "unit"
2026-06-23T09:38:02.9226449Z       ],
2026-06-23T09:38:02.9226556Z       "stages": {
2026-06-23T09:38:02.9226754Z         "doc": {
2026-06-23T09:38:02.9226871Z           "complete": false,
2026-06-23T09:38:02.9226977Z           "evidence": []
2026-06-23T09:38:02.9227064Z         },
2026-06-23T09:38:02.9227162Z         "impl": {
2026-06-23T09:38:02.9227276Z           "complete": true,
2026-06-23T09:38:02.9227390Z           "evidence": [
2026-06-23T09:38:02.9227489Z             {
2026-06-23T09:38:02.9227630Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T09:38:02.9227741Z               "line": 31
2026-06-23T09:38:02.9227836Z             },
2026-06-23T09:38:02.9227940Z             {
2026-06-23T09:38:02.9228080Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T09:38:02.9228189Z               "line": 49
2026-06-23T09:38:02.9228284Z             }
2026-06-23T09:38:02.9228380Z           ]
2026-06-23T09:38:02.9228471Z         },
2026-06-23T09:38:02.9228565Z         "int": {
2026-06-23T09:38:02.9228677Z           "complete": false,
2026-06-23T09:38:02.9228780Z           "evidence": []
2026-06-23T09:38:02.9228890Z         },
2026-06-23T09:38:02.9229067Z         "unit": {
2026-06-23T09:38:02.9229181Z           "complete": true,
2026-06-23T09:38:02.9229282Z           "evidence": [
2026-06-23T09:38:02.9229381Z             {
2026-06-23T09:38:02.9229520Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T09:38:02.9229626Z               "line": 156
2026-06-23T09:38:02.9229733Z             },
2026-06-23T09:38:02.9229834Z             {
2026-06-23T09:38:02.9229978Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T09:38:02.9230091Z               "line": 164
2026-06-23T09:38:02.9230190Z             },
2026-06-23T09:38:02.9230301Z             {
2026-06-23T09:38:02.9230425Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T09:38:02.9230534Z               "line": 177
2026-06-23T09:38:02.9230635Z             },
2026-06-23T09:38:02.9230739Z             {
2026-06-23T09:38:02.9230878Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T09:38:02.9230992Z               "line": 200
2026-06-23T09:38:02.9231092Z             },
2026-06-23T09:38:02.9231192Z             {
2026-06-23T09:38:02.9231335Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T09:38:02.9231440Z               "line": 216
2026-06-23T09:38:02.9231537Z             },
2026-06-23T09:38:02.9231636Z             {
2026-06-23T09:38:02.9231773Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-23T09:38:02.9231875Z               "line": 233
2026-06-23T09:38:02.9231979Z             }
2026-06-23T09:38:02.9232074Z           ]
2026-06-23T09:38:02.9232176Z         }
2026-06-23T09:38:02.9232279Z       }
2026-06-23T09:38:02.9232378Z     },
2026-06-23T09:38:02.9232478Z     {
2026-06-23T09:38:02.9232583Z       "id": "REQ-EP-4",
2026-06-23T09:38:02.9232752Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-23T09:38:02.9232868Z       "requiredStages": [
2026-06-23T09:38:02.9232968Z         "impl",
2026-06-23T09:38:02.9233067Z         "unit"
2026-06-23T09:38:02.9233173Z       ],
2026-06-23T09:38:02.9233282Z       "stages": {
2026-06-23T09:38:02.9233386Z         "doc": {
2026-06-23T09:38:02.9233497Z           "complete": false,
2026-06-23T09:38:02.9233616Z           "evidence": []
2026-06-23T09:38:02.9233716Z         },
2026-06-23T09:38:02.9233817Z         "impl": {
2026-06-23T09:38:02.9233935Z           "complete": true,
2026-06-23T09:38:02.9234045Z           "evidence": [
2026-06-23T09:38:02.9234151Z             {
2026-06-23T09:38:02.9234279Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9234389Z               "line": 778
2026-06-23T09:38:02.9234494Z             },
2026-06-23T09:38:02.9234689Z             {
2026-06-23T09:38:02.9234837Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9234941Z               "line": 1249
2026-06-23T09:38:02.9235048Z             },
2026-06-23T09:38:02.9235147Z             {
2026-06-23T09:38:02.9235288Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9235492Z               "line": 2268
2026-06-23T09:38:02.9235600Z             },
2026-06-23T09:38:02.9235706Z             {
2026-06-23T09:38:02.9235835Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9235944Z               "line": 131
2026-06-23T09:38:02.9236050Z             },
2026-06-23T09:38:02.9236155Z             {
2026-06-23T09:38:02.9236282Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9236393Z               "line": 751
2026-06-23T09:38:02.9236502Z             },
2026-06-23T09:38:02.9236588Z             {
2026-06-23T09:38:02.9236727Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9236840Z               "line": 900
2026-06-23T09:38:02.9236946Z             },
2026-06-23T09:38:02.9237046Z             {
2026-06-23T09:38:02.9237183Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9237290Z               "line": 271
2026-06-23T09:38:02.9237394Z             },
2026-06-23T09:38:02.9237498Z             {
2026-06-23T09:38:02.9237638Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9237750Z               "line": 458
2026-06-23T09:38:02.9237841Z             },
2026-06-23T09:38:02.9237936Z             {
2026-06-23T09:38:02.9238072Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9238181Z               "line": 1246
2026-06-23T09:38:02.9238287Z             }
2026-06-23T09:38:02.9238387Z           ]
2026-06-23T09:38:02.9238491Z         },
2026-06-23T09:38:02.9238583Z         "int": {
2026-06-23T09:38:02.9238698Z           "complete": false,
2026-06-23T09:38:02.9238816Z           "evidence": []
2026-06-23T09:38:02.9238922Z         },
2026-06-23T09:38:02.9239121Z         "unit": {
2026-06-23T09:38:02.9239227Z           "complete": true,
2026-06-23T09:38:02.9239336Z           "evidence": [
2026-06-23T09:38:02.9239436Z             {
2026-06-23T09:38:02.9239561Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9239675Z               "line": 991
2026-06-23T09:38:02.9239779Z             },
2026-06-23T09:38:02.9239885Z             {
2026-06-23T09:38:02.9240037Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-23T09:38:02.9240143Z               "line": 76
2026-06-23T09:38:02.9240251Z             },
2026-06-23T09:38:02.9240351Z             {
2026-06-23T09:38:02.9240496Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-23T09:38:02.9240604Z               "line": 147
2026-06-23T09:38:02.9243024Z             }
2026-06-23T09:38:02.9243143Z           ]
2026-06-23T09:38:02.9243246Z         }
2026-06-23T09:38:02.9243346Z       }
2026-06-23T09:38:02.9243457Z     },
2026-06-23T09:38:02.9243556Z     {
2026-06-23T09:38:02.9243665Z       "id": "REQ-EP-5",
2026-06-23T09:38:02.9244367Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-23T09:38:02.9244477Z       "requiredStages": [
2026-06-23T09:38:02.9244586Z         "impl",
2026-06-23T09:38:02.9244691Z         "unit",
2026-06-23T09:38:02.9244786Z         "int"
2026-06-23T09:38:02.9244895Z       ],
2026-06-23T09:38:02.9244997Z       "stages": {
2026-06-23T09:38:02.9245106Z         "doc": {
2026-06-23T09:38:02.9245215Z           "complete": false,
2026-06-23T09:38:02.9245326Z           "evidence": []
2026-06-23T09:38:02.9245415Z         },
2026-06-23T09:38:02.9245511Z         "impl": {
2026-06-23T09:38:02.9245636Z           "complete": true,
2026-06-23T09:38:02.9245740Z           "evidence": [
2026-06-23T09:38:02.9245982Z             {
2026-06-23T09:38:02.9246146Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9246266Z               "line": 367
2026-06-23T09:38:02.9246367Z             },
2026-06-23T09:38:02.9246461Z             {
2026-06-23T09:38:02.9246615Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T09:38:02.9246809Z               "line": 18
2026-06-23T09:38:02.9246901Z             },
2026-06-23T09:38:02.9246995Z             {
2026-06-23T09:38:02.9247143Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T09:38:02.9247254Z               "line": 63
2026-06-23T09:38:02.9247353Z             },
2026-06-23T09:38:02.9247453Z             {
2026-06-23T09:38:02.9247597Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T09:38:02.9247711Z               "line": 92
2026-06-23T09:38:02.9247801Z             },
2026-06-23T09:38:02.9247888Z             {
2026-06-23T09:38:02.9248035Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T09:38:02.9248146Z               "line": 167
2026-06-23T09:38:02.9248251Z             },
2026-06-23T09:38:02.9248339Z             {
2026-06-23T09:38:02.9248487Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T09:38:02.9248596Z               "line": 179
2026-06-23T09:38:02.9248685Z             },
2026-06-23T09:38:02.9248795Z             {
2026-06-23T09:38:02.9248925Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:02.9249128Z               "line": 114
2026-06-23T09:38:02.9249224Z             },
2026-06-23T09:38:02.9249318Z             {
2026-06-23T09:38:02.9249468Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9249577Z               "line": 22
2026-06-23T09:38:02.9249686Z             },
2026-06-23T09:38:02.9249787Z             {
2026-06-23T09:38:02.9249915Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9250010Z               "line": 145
2026-06-23T09:38:02.9250126Z             },
2026-06-23T09:38:02.9250225Z             {
2026-06-23T09:38:02.9250368Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9250478Z               "line": 174
2026-06-23T09:38:02.9250578Z             },
2026-06-23T09:38:02.9250678Z             {
2026-06-23T09:38:02.9250821Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9250930Z               "line": 196
2026-06-23T09:38:02.9251037Z             },
2026-06-23T09:38:02.9251136Z             {
2026-06-23T09:38:02.9251273Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9251373Z               "line": 221
2026-06-23T09:38:02.9251470Z             },
2026-06-23T09:38:02.9251559Z             {
2026-06-23T09:38:02.9251702Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9251808Z               "line": 247
2026-06-23T09:38:02.9251902Z             },
2026-06-23T09:38:02.9251998Z             {
2026-06-23T09:38:02.9252132Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9252241Z               "line": 270
2026-06-23T09:38:02.9252342Z             },
2026-06-23T09:38:02.9252437Z             {
2026-06-23T09:38:02.9252579Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.9252686Z               "line": 104
2026-06-23T09:38:02.9252789Z             },
2026-06-23T09:38:02.9252889Z             {
2026-06-23T09:38:02.9253014Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9253127Z               "line": 7133
2026-06-23T09:38:02.9253228Z             },
2026-06-23T09:38:02.9253329Z             {
2026-06-23T09:38:02.9253452Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9253565Z               "line": 7267
2026-06-23T09:38:02.9253665Z             },
2026-06-23T09:38:02.9253754Z             {
2026-06-23T09:38:02.9253872Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9253973Z               "line": 7433
2026-06-23T09:38:02.9254202Z             },
2026-06-23T09:38:02.9254303Z             {
2026-06-23T09:38:02.9254421Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9254526Z               "line": 7961
2026-06-23T09:38:02.9254622Z             }
2026-06-23T09:38:02.9254722Z           ]
2026-06-23T09:38:02.9254821Z         },
2026-06-23T09:38:02.9254923Z         "int": {
2026-06-23T09:38:02.9255131Z           "complete": true,
2026-06-23T09:38:02.9255233Z           "evidence": [
2026-06-23T09:38:02.9255337Z             {
2026-06-23T09:38:02.9255485Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-23T09:38:02.9255595Z               "line": 16
2026-06-23T09:38:02.9255689Z             },
2026-06-23T09:38:02.9255790Z             {
2026-06-23T09:38:02.9255924Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-23T09:38:02.9256033Z               "line": 15
2026-06-23T09:38:02.9256125Z             }
2026-06-23T09:38:02.9256220Z           ]
2026-06-23T09:38:02.9256319Z         },
2026-06-23T09:38:02.9256423Z         "unit": {
2026-06-23T09:38:02.9256532Z           "complete": true,
2026-06-23T09:38:02.9256635Z           "evidence": [
2026-06-23T09:38:02.9256735Z             {
2026-06-23T09:38:02.9256870Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T09:38:02.9256979Z               "line": 246
2026-06-23T09:38:02.9257079Z             },
2026-06-23T09:38:02.9257184Z             {
2026-06-23T09:38:02.9257317Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T09:38:02.9257427Z               "line": 306
2026-06-23T09:38:02.9257527Z             },
2026-06-23T09:38:02.9257618Z             {
2026-06-23T09:38:02.9257761Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-23T09:38:02.9257870Z               "line": 363
2026-06-23T09:38:02.9257970Z             },
2026-06-23T09:38:02.9258071Z             {
2026-06-23T09:38:02.9258209Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9258323Z               "line": 286
2026-06-23T09:38:02.9258415Z             },
2026-06-23T09:38:02.9258519Z             {
2026-06-23T09:38:02.9258667Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9258768Z               "line": 338
2026-06-23T09:38:02.9258871Z             },
2026-06-23T09:38:02.9259037Z             {
2026-06-23T09:38:02.9259188Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.9259297Z               "line": 783
2026-06-23T09:38:02.9259402Z             },
2026-06-23T09:38:02.9259503Z             {
2026-06-23T09:38:02.9259612Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9259718Z               "line": 10289
2026-06-23T09:38:02.9259823Z             },
2026-06-23T09:38:02.9259921Z             {
2026-06-23T09:38:02.9260047Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9260156Z               "line": 10442
2026-06-23T09:38:02.9260250Z             },
2026-06-23T09:38:02.9260342Z             {
2026-06-23T09:38:02.9260456Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9260565Z               "line": 11031
2026-06-23T09:38:02.9260667Z             },
2026-06-23T09:38:02.9260761Z             {
2026-06-23T09:38:02.9260885Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9260996Z               "line": 11147
2026-06-23T09:38:02.9261095Z             }
2026-06-23T09:38:02.9261200Z           ]
2026-06-23T09:38:02.9261301Z         }
2026-06-23T09:38:02.9261386Z       }
2026-06-23T09:38:02.9261491Z     },
2026-06-23T09:38:02.9261588Z     {
2026-06-23T09:38:02.9261697Z       "id": "REQ-EP-6",
2026-06-23T09:38:02.9263222Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-23T09:38:02.9263449Z       "requiredStages": [
2026-06-23T09:38:02.9263551Z         "doc",
2026-06-23T09:38:02.9263654Z         "impl",
2026-06-23T09:38:02.9263759Z         "unit"
2026-06-23T09:38:02.9263856Z       ],
2026-06-23T09:38:02.9263955Z       "stages": {
2026-06-23T09:38:02.9264140Z         "doc": {
2026-06-23T09:38:02.9264258Z           "complete": true,
2026-06-23T09:38:02.9264362Z           "evidence": [
2026-06-23T09:38:02.9264457Z             {
2026-06-23T09:38:02.9264577Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.9264681Z               "line": 236
2026-06-23T09:38:02.9264781Z             }
2026-06-23T09:38:02.9264877Z           ]
2026-06-23T09:38:02.9264981Z         },
2026-06-23T09:38:02.9265081Z         "impl": {
2026-06-23T09:38:02.9265192Z           "complete": true,
2026-06-23T09:38:02.9265296Z           "evidence": [
2026-06-23T09:38:02.9265396Z             {
2026-06-23T09:38:02.9265549Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9265658Z               "line": 212
2026-06-23T09:38:02.9265754Z             }
2026-06-23T09:38:02.9265854Z           ]
2026-06-23T09:38:02.9265954Z         },
2026-06-23T09:38:02.9266060Z         "int": {
2026-06-23T09:38:02.9266164Z           "complete": true,
2026-06-23T09:38:02.9266283Z           "evidence": [
2026-06-23T09:38:02.9266379Z             {
2026-06-23T09:38:02.9266517Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-23T09:38:02.9266627Z               "line": 18
2026-06-23T09:38:02.9266733Z             }
2026-06-23T09:38:02.9266827Z           ]
2026-06-23T09:38:02.9266917Z         },
2026-06-23T09:38:02.9267021Z         "unit": {
2026-06-23T09:38:02.9267130Z           "complete": true,
2026-06-23T09:38:02.9267229Z           "evidence": [
2026-06-23T09:38:02.9267324Z             {
2026-06-23T09:38:02.9267477Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:02.9267581Z               "line": 558
2026-06-23T09:38:02.9267677Z             },
2026-06-23T09:38:02.9267778Z             {
2026-06-23T09:38:02.9267906Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9268021Z               "line": 904
2026-06-23T09:38:02.9268121Z             }
2026-06-23T09:38:02.9268216Z           ]
2026-06-23T09:38:02.9268311Z         }
2026-06-23T09:38:02.9268407Z       }
2026-06-23T09:38:02.9268497Z     },
2026-06-23T09:38:02.9268597Z     {
2026-06-23T09:38:02.9268703Z       "id": "REQ-EP-7",
2026-06-23T09:38:02.9270481Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-23T09:38:02.9270612Z       "requiredStages": [
2026-06-23T09:38:02.9270716Z         "doc",
2026-06-23T09:38:02.9270806Z         "impl",
2026-06-23T09:38:02.9270912Z         "unit"
2026-06-23T09:38:02.9271020Z       ],
2026-06-23T09:38:02.9271121Z       "stages": {
2026-06-23T09:38:02.9271232Z         "doc": {
2026-06-23T09:38:02.9271335Z           "complete": true,
2026-06-23T09:38:02.9271450Z           "evidence": [
2026-06-23T09:38:02.9271551Z             {
2026-06-23T09:38:02.9271669Z               "path": "CONTEXT.md",
2026-06-23T09:38:02.9271769Z               "line": 503
2026-06-23T09:38:02.9271866Z             }
2026-06-23T09:38:02.9271965Z           ]
2026-06-23T09:38:02.9272060Z         },
2026-06-23T09:38:02.9272167Z         "impl": {
2026-06-23T09:38:02.9272275Z           "complete": true,
2026-06-23T09:38:02.9272384Z           "evidence": [
2026-06-23T09:38:02.9272489Z             {
2026-06-23T09:38:02.9272727Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:02.9272827Z               "line": 505
2026-06-23T09:38:02.9272923Z             },
2026-06-23T09:38:02.9273022Z             {
2026-06-23T09:38:02.9273157Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T09:38:02.9273267Z               "line": 87
2026-06-23T09:38:02.9273462Z             },
2026-06-23T09:38:02.9273557Z             {
2026-06-23T09:38:02.9273709Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9273815Z               "line": 81
2026-06-23T09:38:02.9273919Z             },
2026-06-23T09:38:02.9274009Z             {
2026-06-23T09:38:02.9274158Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9274267Z               "line": 166
2026-06-23T09:38:02.9274358Z             },
2026-06-23T09:38:02.9274464Z             {
2026-06-23T09:38:02.9274590Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9274695Z               "line": 1994
2026-06-23T09:38:02.9274809Z             }
2026-06-23T09:38:02.9274907Z           ]
2026-06-23T09:38:02.9275007Z         },
2026-06-23T09:38:02.9275108Z         "int": {
2026-06-23T09:38:02.9275217Z           "complete": false,
2026-06-23T09:38:02.9275322Z           "evidence": []
2026-06-23T09:38:02.9275423Z         },
2026-06-23T09:38:02.9275527Z         "unit": {
2026-06-23T09:38:02.9275641Z           "complete": true,
2026-06-23T09:38:02.9275747Z           "evidence": [
2026-06-23T09:38:02.9275851Z             {
2026-06-23T09:38:02.9275995Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:02.9276100Z               "line": 623
2026-06-23T09:38:02.9276199Z             },
2026-06-23T09:38:02.9276300Z             {
2026-06-23T09:38:02.9276433Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:02.9276528Z               "line": 212
2026-06-23T09:38:02.9276620Z             },
2026-06-23T09:38:02.9276724Z             {
2026-06-23T09:38:02.9276857Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T09:38:02.9276959Z               "line": 307
2026-06-23T09:38:02.9277058Z             },
2026-06-23T09:38:02.9277158Z             {
2026-06-23T09:38:02.9277288Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9277396Z               "line": 9101
2026-06-23T09:38:02.9277500Z             },
2026-06-23T09:38:02.9277605Z             {
2026-06-23T09:38:02.9277727Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9277836Z               "line": 9128
2026-06-23T09:38:02.9277922Z             }
2026-06-23T09:38:02.9278028Z           ]
2026-06-23T09:38:02.9278122Z         }
2026-06-23T09:38:02.9278223Z       }
2026-06-23T09:38:02.9278314Z     },
2026-06-23T09:38:02.9278413Z     {
2026-06-23T09:38:02.9278518Z       "id": "REQ-EP-8",
2026-06-23T09:38:02.9281419Z       "title": "AlwaysOnEndpoint: a resident, addressable, mindless endpoint whose adapter binary the daemon supervises continuously — register-triggered by an adapter-option's `[always-on]` manifest section, one supervised binary per `<adapter>[:profile]`, running independent of agent liveness. It self-manages its `#`-addressed channel endpoints via the existing `api bind` (one connection fronts many). The SECOND class of spt-core-boot-launched third-party binary (after the shell wake-watcher); supervision reuses the wake-watcher scaffolding (backoff / give-up latch / one-per-instance lock / orphan-kill / brain-side reconcile) MINUS the offline-only flip — always online, never resting (no dormant/suspended states). Two-way: agents message it; it may call `endpoint wake <id>`, target-side authorized (REQ-INST-3/6 wake resolution + access whitelist + shell_wake_spawn_anywhere — no caller-ownership gate). First consumer downstream: spt-discord.",
2026-06-23T09:38:02.9281557Z       "requiredStages": [],
2026-06-23T09:38:02.9281662Z       "stages": {
2026-06-23T09:38:02.9281768Z         "doc": {
2026-06-23T09:38:02.9281882Z           "complete": true,
2026-06-23T09:38:02.9282088Z           "evidence": [
2026-06-23T09:38:02.9282187Z             {
2026-06-23T09:38:02.9282483Z               "path": "docs/adr/0023-always-on-endpoints-resident-supervised-binary-sigil-addressing.md",
2026-06-23T09:38:02.9282592Z               "line": 5
2026-06-23T09:38:02.9282693Z             }
2026-06-23T09:38:02.9282798Z           ]
2026-06-23T09:38:02.9283005Z         },
2026-06-23T09:38:02.9283112Z         "impl": {
2026-06-23T09:38:02.9283216Z           "complete": false,
2026-06-23T09:38:02.9283329Z           "evidence": []
2026-06-23T09:38:02.9283426Z         },
2026-06-23T09:38:02.9283521Z         "int": {
2026-06-23T09:38:02.9283630Z           "complete": false,
2026-06-23T09:38:02.9283736Z           "evidence": []
2026-06-23T09:38:02.9283832Z         },
2026-06-23T09:38:02.9283930Z         "unit": {
2026-06-23T09:38:02.9284046Z           "complete": false,
2026-06-23T09:38:02.9284150Z           "evidence": []
2026-06-23T09:38:02.9284250Z         }
2026-06-23T09:38:02.9284351Z       }
2026-06-23T09:38:02.9284455Z     },
2026-06-23T09:38:02.9284550Z     {
2026-06-23T09:38:02.9284656Z       "id": "REQ-EP-9",
2026-06-23T09:38:02.9286270Z       "title": "`#` always-on address sigil: a reserved LEADING sigil marking an AlwaysOnEndpoint, extending the REQ-INST-10 grammar to `[subnet:]#id[@node]`. Mandatory + bijective — `#name` ⟺ always-on endpoint, bare `name` ⟺ agent endpoint — so the router resolves endpoint class from the address alone, before any registry lookup. Sits ABOVE REQ-HAZARD-ID-CHARSET: the address parser strips the single leading `#` before id validation, so the bare/stored id stays charset-clean and a mid-id `#` remains rejected (the charset contract is unchanged).",
2026-06-23T09:38:02.9286403Z       "requiredStages": [],
2026-06-23T09:38:02.9286511Z       "stages": {
2026-06-23T09:38:02.9286603Z         "doc": {
2026-06-23T09:38:02.9286713Z           "complete": true,
2026-06-23T09:38:02.9286812Z           "evidence": [
2026-06-23T09:38:02.9286913Z             {
2026-06-23T09:38:02.9287223Z               "path": "docs/adr/0023-always-on-endpoints-resident-supervised-binary-sigil-addressing.md",
2026-06-23T09:38:02.9287317Z               "line": 5
2026-06-23T09:38:02.9287417Z             }
2026-06-23T09:38:02.9287524Z           ]
2026-06-23T09:38:02.9287618Z         },
2026-06-23T09:38:02.9287728Z         "impl": {
2026-06-23T09:38:02.9287838Z           "complete": false,
2026-06-23T09:38:02.9287952Z           "evidence": []
2026-06-23T09:38:02.9288042Z         },
2026-06-23T09:38:02.9288151Z         "int": {
2026-06-23T09:38:02.9288260Z           "complete": false,
2026-06-23T09:38:02.9288373Z           "evidence": []
2026-06-23T09:38:02.9288478Z         },
2026-06-23T09:38:02.9288583Z         "unit": {
2026-06-23T09:38:02.9288687Z           "complete": false,
2026-06-23T09:38:02.9288797Z           "evidence": []
2026-06-23T09:38:02.9288893Z         }
2026-06-23T09:38:02.9289083Z       }
2026-06-23T09:38:02.9289189Z     },
2026-06-23T09:38:02.9289284Z     {
2026-06-23T09:38:02.9289403Z       "id": "REQ-FRONT-1",
2026-06-23T09:38:02.9289599Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-23T09:38:02.9289712Z       "requiredStages": [],
2026-06-23T09:38:02.9289809Z       "stages": {
2026-06-23T09:38:02.9289917Z         "doc": {
2026-06-23T09:38:02.9290022Z           "complete": false,
2026-06-23T09:38:02.9290143Z           "evidence": []
2026-06-23T09:38:02.9290242Z         },
2026-06-23T09:38:02.9290347Z         "impl": {
2026-06-23T09:38:02.9290453Z           "complete": false,
2026-06-23T09:38:02.9290561Z           "evidence": []
2026-06-23T09:38:02.9290660Z         },
2026-06-23T09:38:02.9290761Z         "int": {
2026-06-23T09:38:02.9290878Z           "complete": false,
2026-06-23T09:38:02.9290987Z           "evidence": []
2026-06-23T09:38:02.9291088Z         },
2026-06-23T09:38:02.9291188Z         "unit": {
2026-06-23T09:38:02.9291306Z           "complete": false,
2026-06-23T09:38:02.9291412Z           "evidence": []
2026-06-23T09:38:02.9291626Z         }
2026-06-23T09:38:02.9291732Z       }
2026-06-23T09:38:02.9291822Z     },
2026-06-23T09:38:02.9291921Z     {
2026-06-23T09:38:02.9292046Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-23T09:38:02.9297449Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-23T09:38:02.9297711Z       "requiredStages": [
2026-06-23T09:38:02.9297812Z         "int"
2026-06-23T09:38:02.9297920Z       ],
2026-06-23T09:38:02.9298026Z       "stages": {
2026-06-23T09:38:02.9298132Z         "doc": {
2026-06-23T09:38:02.9298249Z           "complete": false,
2026-06-23T09:38:02.9298355Z           "evidence": []
2026-06-23T09:38:02.9298461Z         },
2026-06-23T09:38:02.9298564Z         "impl": {
2026-06-23T09:38:02.9298677Z           "complete": false,
2026-06-23T09:38:02.9298792Z           "evidence": []
2026-06-23T09:38:02.9298885Z         },
2026-06-23T09:38:02.9299081Z         "int": {
2026-06-23T09:38:02.9299182Z           "complete": true,
2026-06-23T09:38:02.9299290Z           "evidence": [
2026-06-23T09:38:02.9299387Z             {
2026-06-23T09:38:02.9299548Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-23T09:38:02.9299658Z               "line": 300
2026-06-23T09:38:02.9299763Z             }
2026-06-23T09:38:02.9299858Z           ]
2026-06-23T09:38:02.9299953Z         },
2026-06-23T09:38:02.9300050Z         "unit": {
2026-06-23T09:38:02.9300159Z           "complete": false,
2026-06-23T09:38:02.9300277Z           "evidence": []
2026-06-23T09:38:02.9300365Z         }
2026-06-23T09:38:02.9300468Z       }
2026-06-23T09:38:02.9300569Z     },
2026-06-23T09:38:02.9300670Z     {
2026-06-23T09:38:02.9300802Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-23T09:38:02.9303369Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-23T09:38:02.9303626Z       "requiredStages": [
2026-06-23T09:38:02.9303731Z         "impl",
2026-06-23T09:38:02.9303828Z         "unit",
2026-06-23T09:38:02.9304036Z         "int"
2026-06-23T09:38:02.9304140Z       ],
2026-06-23T09:38:02.9304246Z       "stages": {
2026-06-23T09:38:02.9304341Z         "doc": {
2026-06-23T09:38:02.9304450Z           "complete": false,
2026-06-23T09:38:02.9304556Z           "evidence": []
2026-06-23T09:38:02.9304655Z         },
2026-06-23T09:38:02.9304765Z         "impl": {
2026-06-23T09:38:02.9304875Z           "complete": true,
2026-06-23T09:38:02.9304989Z           "evidence": [
2026-06-23T09:38:02.9305094Z             {
2026-06-23T09:38:02.9305238Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9305351Z               "line": 257
2026-06-23T09:38:02.9305458Z             }
2026-06-23T09:38:02.9305561Z           ]
2026-06-23T09:38:02.9305666Z         },
2026-06-23T09:38:02.9305768Z         "int": {
2026-06-23T09:38:02.9305876Z           "complete": true,
2026-06-23T09:38:02.9305981Z           "evidence": [
2026-06-23T09:38:02.9306087Z             {
2026-06-23T09:38:02.9306243Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-23T09:38:02.9306361Z               "line": 93
2026-06-23T09:38:02.9306466Z             }
2026-06-23T09:38:02.9306560Z           ]
2026-06-23T09:38:02.9306664Z         },
2026-06-23T09:38:02.9306764Z         "unit": {
2026-06-23T09:38:02.9306879Z           "complete": true,
2026-06-23T09:38:02.9306983Z           "evidence": [
2026-06-23T09:38:02.9307084Z             {
2026-06-23T09:38:02.9307222Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9307336Z               "line": 802
2026-06-23T09:38:02.9307447Z             },
2026-06-23T09:38:02.9307546Z             {
2026-06-23T09:38:02.9307695Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9307795Z               "line": 824
2026-06-23T09:38:02.9307899Z             },
2026-06-23T09:38:02.9308000Z             {
2026-06-23T09:38:02.9308133Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9308232Z               "line": 855
2026-06-23T09:38:02.9308339Z             }
2026-06-23T09:38:02.9308443Z           ]
2026-06-23T09:38:02.9308538Z         }
2026-06-23T09:38:02.9308635Z       }
2026-06-23T09:38:02.9308739Z     },
2026-06-23T09:38:02.9308839Z     {
2026-06-23T09:38:02.9309054Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-23T09:38:02.9311540Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-23T09:38:02.9311676Z       "requiredStages": [
2026-06-23T09:38:02.9311785Z         "doc",
2026-06-23T09:38:02.9311895Z         "impl",
2026-06-23T09:38:02.9311989Z         "unit",
2026-06-23T09:38:02.9312097Z         "int"
2026-06-23T09:38:02.9312198Z       ],
2026-06-23T09:38:02.9312304Z       "stages": {
2026-06-23T09:38:02.9312408Z         "doc": {
2026-06-23T09:38:02.9312519Z           "complete": true,
2026-06-23T09:38:02.9312623Z           "evidence": [
2026-06-23T09:38:02.9312838Z             {
2026-06-23T09:38:02.9312975Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9313085Z               "line": 333
2026-06-23T09:38:02.9313191Z             }
2026-06-23T09:38:02.9313276Z           ]
2026-06-23T09:38:02.9313376Z         },
2026-06-23T09:38:02.9313477Z         "impl": {
2026-06-23T09:38:02.9313581Z           "complete": true,
2026-06-23T09:38:02.9313787Z           "evidence": [
2026-06-23T09:38:02.9313886Z             {
2026-06-23T09:38:02.9314039Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9314145Z               "line": 494
2026-06-23T09:38:02.9314253Z             },
2026-06-23T09:38:02.9314354Z             {
2026-06-23T09:38:02.9314501Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9314605Z               "line": 499
2026-06-23T09:38:02.9314705Z             },
2026-06-23T09:38:02.9314806Z             {
2026-06-23T09:38:02.9314939Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9315054Z               "line": 874
2026-06-23T09:38:02.9315164Z             },
2026-06-23T09:38:02.9315263Z             {
2026-06-23T09:38:02.9315407Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9315512Z               "line": 915
2026-06-23T09:38:02.9315620Z             },
2026-06-23T09:38:02.9315722Z             {
2026-06-23T09:38:02.9315864Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9315969Z               "line": 926
2026-06-23T09:38:02.9316074Z             },
2026-06-23T09:38:02.9316179Z             {
2026-06-23T09:38:02.9316318Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:02.9316436Z               "line": 358
2026-06-23T09:38:02.9316536Z             }
2026-06-23T09:38:02.9316642Z           ]
2026-06-23T09:38:02.9316751Z         },
2026-06-23T09:38:02.9316850Z         "int": {
2026-06-23T09:38:02.9316964Z           "complete": true,
2026-06-23T09:38:02.9317064Z           "evidence": [
2026-06-23T09:38:02.9317181Z             {
2026-06-23T09:38:02.9317329Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-23T09:38:02.9317439Z               "line": 30
2026-06-23T09:38:02.9317538Z             }
2026-06-23T09:38:02.9317630Z           ]
2026-06-23T09:38:02.9317735Z         },
2026-06-23T09:38:02.9317829Z         "unit": {
2026-06-23T09:38:02.9317945Z           "complete": true,
2026-06-23T09:38:02.9318054Z           "evidence": [
2026-06-23T09:38:02.9318158Z             {
2026-06-23T09:38:02.9318303Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9318412Z               "line": 1493
2026-06-23T09:38:02.9318517Z             },
2026-06-23T09:38:02.9318612Z             {
2026-06-23T09:38:02.9318788Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9318895Z               "line": 1518
2026-06-23T09:38:02.9319075Z             },
2026-06-23T09:38:02.9319175Z             {
2026-06-23T09:38:02.9319308Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9319427Z               "line": 1535
2026-06-23T09:38:02.9319529Z             },
2026-06-23T09:38:02.9319642Z             {
2026-06-23T09:38:02.9319788Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9319903Z               "line": 1578
2026-06-23T09:38:02.9320006Z             }
2026-06-23T09:38:02.9320110Z           ]
2026-06-23T09:38:02.9320221Z         }
2026-06-23T09:38:02.9320321Z       }
2026-06-23T09:38:02.9320415Z     },
2026-06-23T09:38:02.9320502Z     {
2026-06-23T09:38:02.9320668Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-23T09:38:02.9323268Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-23T09:38:02.9323607Z       "requiredStages": [],
2026-06-23T09:38:02.9323703Z       "stages": {
2026-06-23T09:38:02.9323807Z         "doc": {
2026-06-23T09:38:02.9323917Z           "complete": false,
2026-06-23T09:38:02.9324028Z           "evidence": []
2026-06-23T09:38:02.9324126Z         },
2026-06-23T09:38:02.9324236Z         "impl": {
2026-06-23T09:38:02.9324357Z           "complete": false,
2026-06-23T09:38:02.9324460Z           "evidence": []
2026-06-23T09:38:02.9324561Z         },
2026-06-23T09:38:02.9324657Z         "int": {
2026-06-23T09:38:02.9324765Z           "complete": false,
2026-06-23T09:38:02.9324871Z           "evidence": []
2026-06-23T09:38:02.9324977Z         },
2026-06-23T09:38:02.9325085Z         "unit": {
2026-06-23T09:38:02.9325194Z           "complete": false,
2026-06-23T09:38:02.9325309Z           "evidence": []
2026-06-23T09:38:02.9325409Z         }
2026-06-23T09:38:02.9325518Z       }
2026-06-23T09:38:02.9325604Z     },
2026-06-23T09:38:02.9325709Z     {
2026-06-23T09:38:02.9325865Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-23T09:38:02.9329654Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-23T09:38:02.9329793Z       "requiredStages": [
2026-06-23T09:38:02.9329906Z         "impl",
2026-06-23T09:38:02.9330011Z         "unit",
2026-06-23T09:38:02.9330117Z         "int"
2026-06-23T09:38:02.9330221Z       ],
2026-06-23T09:38:02.9330324Z       "stages": {
2026-06-23T09:38:02.9330435Z         "doc": {
2026-06-23T09:38:02.9330538Z           "complete": false,
2026-06-23T09:38:02.9330646Z           "evidence": []
2026-06-23T09:38:02.9330757Z         },
2026-06-23T09:38:02.9330890Z         "impl": {
2026-06-23T09:38:02.9331014Z           "complete": true,
2026-06-23T09:38:02.9331129Z           "evidence": [
2026-06-23T09:38:02.9331233Z             {
2026-06-23T09:38:02.9331387Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9331529Z               "line": 585
2026-06-23T09:38:02.9331634Z             },
2026-06-23T09:38:02.9331749Z             {
2026-06-23T09:38:02.9331905Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9332007Z               "line": 609
2026-06-23T09:38:02.9332111Z             },
2026-06-23T09:38:02.9332307Z             {
2026-06-23T09:38:02.9332459Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9332563Z               "line": 635
2026-06-23T09:38:02.9332670Z             },
2026-06-23T09:38:02.9332774Z             {
2026-06-23T09:38:02.9332915Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9333128Z               "line": 654
2026-06-23T09:38:02.9333232Z             },
2026-06-23T09:38:02.9333338Z             {
2026-06-23T09:38:02.9333471Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9333580Z               "line": 730
2026-06-23T09:38:02.9333686Z             },
2026-06-23T09:38:02.9333790Z             {
2026-06-23T09:38:02.9333934Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:02.9334038Z               "line": 89
2026-06-23T09:38:02.9334143Z             },
2026-06-23T09:38:02.9334249Z             {
2026-06-23T09:38:02.9334377Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:02.9334491Z               "line": 134
2026-06-23T09:38:02.9334588Z             }
2026-06-23T09:38:02.9334696Z           ]
2026-06-23T09:38:02.9334796Z         },
2026-06-23T09:38:02.9334902Z         "int": {
2026-06-23T09:38:02.9335025Z           "complete": true,
2026-06-23T09:38:02.9335130Z           "evidence": [
2026-06-23T09:38:02.9335232Z             {
2026-06-23T09:38:02.9335407Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-23T09:38:02.9335523Z               "line": 20
2026-06-23T09:38:02.9335622Z             }
2026-06-23T09:38:02.9335730Z           ]
2026-06-23T09:38:02.9335835Z         },
2026-06-23T09:38:02.9335941Z         "unit": {
2026-06-23T09:38:02.9336044Z           "complete": true,
2026-06-23T09:38:02.9336155Z           "evidence": [
2026-06-23T09:38:02.9336255Z             {
2026-06-23T09:38:02.9336402Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9336513Z               "line": 1148
2026-06-23T09:38:02.9336627Z             },
2026-06-23T09:38:02.9336731Z             {
2026-06-23T09:38:02.9336871Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:02.9336979Z               "line": 445
2026-06-23T09:38:02.9337089Z             }
2026-06-23T09:38:02.9337190Z           ]
2026-06-23T09:38:02.9337290Z         }
2026-06-23T09:38:02.9337394Z       }
2026-06-23T09:38:02.9337491Z     },
2026-06-23T09:38:02.9337599Z     {
2026-06-23T09:38:02.9337743Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-23T09:38:02.9340456Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-23T09:38:02.9340591Z       "requiredStages": [
2026-06-23T09:38:02.9340696Z         "doc",
2026-06-23T09:38:02.9340800Z         "impl",
2026-06-23T09:38:02.9340908Z         "unit",
2026-06-23T09:38:02.9341009Z         "int"
2026-06-23T09:38:02.9341112Z       ],
2026-06-23T09:38:02.9341230Z       "stages": {
2026-06-23T09:38:02.9341336Z         "doc": {
2026-06-23T09:38:02.9341450Z           "complete": true,
2026-06-23T09:38:02.9341550Z           "evidence": [
2026-06-23T09:38:02.9341661Z             {
2026-06-23T09:38:02.9341793Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9341903Z               "line": 302
2026-06-23T09:38:02.9342122Z             }
2026-06-23T09:38:02.9348418Z           ]
2026-06-23T09:38:02.9348550Z         },
2026-06-23T09:38:02.9348654Z         "impl": {
2026-06-23T09:38:02.9348786Z           "complete": true,
2026-06-23T09:38:02.9348899Z           "evidence": [
2026-06-23T09:38:02.9349082Z             {
2026-06-23T09:38:02.9349248Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:02.9349510Z               "line": 108
2026-06-23T09:38:02.9349616Z             },
2026-06-23T09:38:02.9349720Z             {
2026-06-23T09:38:02.9349877Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9349983Z               "line": 921
2026-06-23T09:38:02.9350092Z             },
2026-06-23T09:38:02.9350216Z             {
2026-06-23T09:38:02.9350359Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9350469Z               "line": 1165
2026-06-23T09:38:02.9350565Z             },
2026-06-23T09:38:02.9350673Z             {
2026-06-23T09:38:02.9350821Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9350937Z               "line": 23
2026-06-23T09:38:02.9351040Z             },
2026-06-23T09:38:02.9351136Z             {
2026-06-23T09:38:02.9351303Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9351407Z               "line": 113
2026-06-23T09:38:02.9351516Z             },
2026-06-23T09:38:02.9351620Z             {
2026-06-23T09:38:02.9351771Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9351887Z               "line": 158
2026-06-23T09:38:02.9352001Z             },
2026-06-23T09:38:02.9352110Z             {
2026-06-23T09:38:02.9352254Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9352363Z               "line": 218
2026-06-23T09:38:02.9352473Z             },
2026-06-23T09:38:02.9352568Z             {
2026-06-23T09:38:02.9352716Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9352817Z               "line": 261
2026-06-23T09:38:02.9352935Z             },
2026-06-23T09:38:02.9353040Z             {
2026-06-23T09:38:02.9353179Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9353278Z               "line": 275
2026-06-23T09:38:02.9353369Z             },
2026-06-23T09:38:02.9353466Z             {
2026-06-23T09:38:02.9353607Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9353728Z               "line": 320
2026-06-23T09:38:02.9353823Z             },
2026-06-23T09:38:02.9353936Z             {
2026-06-23T09:38:02.9354083Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9354192Z               "line": 347
2026-06-23T09:38:02.9354300Z             },
2026-06-23T09:38:02.9354415Z             {
2026-06-23T09:38:02.9354563Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9354672Z               "line": 359
2026-06-23T09:38:02.9354773Z             },
2026-06-23T09:38:02.9354878Z             {
2026-06-23T09:38:02.9355030Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9355135Z               "line": 373
2026-06-23T09:38:02.9355240Z             },
2026-06-23T09:38:02.9355345Z             {
2026-06-23T09:38:02.9355478Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9355583Z               "line": 400
2026-06-23T09:38:02.9355689Z             },
2026-06-23T09:38:02.9355793Z             {
2026-06-23T09:38:02.9355931Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9356042Z               "line": 643
2026-06-23T09:38:02.9356150Z             },
2026-06-23T09:38:02.9356255Z             {
2026-06-23T09:38:02.9356395Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9356508Z               "line": 989
2026-06-23T09:38:02.9356609Z             },
2026-06-23T09:38:02.9356719Z             {
2026-06-23T09:38:02.9356865Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9357095Z               "line": 275
2026-06-23T09:38:02.9357193Z             },
2026-06-23T09:38:02.9357290Z             {
2026-06-23T09:38:02.9357433Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9357532Z               "line": 1284
2026-06-23T09:38:02.9357633Z             },
2026-06-23T09:38:02.9357733Z             {
2026-06-23T09:38:02.9357953Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9358061Z               "line": 1386
2026-06-23T09:38:02.9358161Z             },
2026-06-23T09:38:02.9358268Z             {
2026-06-23T09:38:02.9358457Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9358564Z               "line": 1398
2026-06-23T09:38:02.9358663Z             },
2026-06-23T09:38:02.9358772Z             {
2026-06-23T09:38:02.9358912Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9359100Z               "line": 1993
2026-06-23T09:38:02.9359205Z             },
2026-06-23T09:38:02.9359314Z             {
2026-06-23T09:38:02.9359455Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9359580Z               "line": 188
2026-06-23T09:38:02.9359684Z             },
2026-06-23T09:38:02.9359789Z             {
2026-06-23T09:38:02.9359918Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9360027Z               "line": 265
2026-06-23T09:38:02.9360142Z             },
2026-06-23T09:38:02.9360238Z             {
2026-06-23T09:38:02.9360375Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9360486Z               "line": 276
2026-06-23T09:38:02.9360590Z             },
2026-06-23T09:38:02.9360694Z             {
2026-06-23T09:38:02.9360839Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9360938Z               "line": 329
2026-06-23T09:38:02.9361043Z             },
2026-06-23T09:38:02.9361144Z             {
2026-06-23T09:38:02.9361296Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9361406Z               "line": 56
2026-06-23T09:38:02.9361512Z             },
2026-06-23T09:38:02.9361605Z             {
2026-06-23T09:38:02.9361750Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9361850Z               "line": 188
2026-06-23T09:38:02.9361953Z             },
2026-06-23T09:38:02.9362053Z             {
2026-06-23T09:38:02.9362199Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T09:38:02.9362313Z               "line": 82
2026-06-23T09:38:02.9362408Z             },
2026-06-23T09:38:02.9362514Z             {
2026-06-23T09:38:02.9362660Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9362758Z               "line": 506
2026-06-23T09:38:02.9362862Z             },
2026-06-23T09:38:02.9362971Z             {
2026-06-23T09:38:02.9363110Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:02.9363209Z               "line": 424
2026-06-23T09:38:02.9363309Z             },
2026-06-23T09:38:02.9363415Z             {
2026-06-23T09:38:02.9363552Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9363663Z               "line": 2360
2026-06-23T09:38:02.9363768Z             }
2026-06-23T09:38:02.9363872Z           ]
2026-06-23T09:38:02.9363978Z         },
2026-06-23T09:38:02.9364073Z         "int": {
2026-06-23T09:38:02.9364196Z           "complete": true,
2026-06-23T09:38:02.9364317Z           "evidence": [
2026-06-23T09:38:02.9364407Z             {
2026-06-23T09:38:02.9364548Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-23T09:38:02.9364653Z               "line": 57
2026-06-23T09:38:02.9364766Z             },
2026-06-23T09:38:02.9364856Z             {
2026-06-23T09:38:02.9364995Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-23T09:38:02.9365100Z               "line": 41
2026-06-23T09:38:02.9365194Z             }
2026-06-23T09:38:02.9365300Z           ]
2026-06-23T09:38:02.9365405Z         },
2026-06-23T09:38:02.9365514Z         "unit": {
2026-06-23T09:38:02.9365752Z           "complete": true,
2026-06-23T09:38:02.9365861Z           "evidence": [
2026-06-23T09:38:02.9365958Z             {
2026-06-23T09:38:02.9366105Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:02.9366220Z               "line": 532
2026-06-23T09:38:02.9366320Z             },
2026-06-23T09:38:02.9366430Z             {
2026-06-23T09:38:02.9366672Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:02.9366787Z               "line": 759
2026-06-23T09:38:02.9366893Z             },
2026-06-23T09:38:02.9366992Z             {
2026-06-23T09:38:02.9367135Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9367241Z               "line": 1067
2026-06-23T09:38:02.9367349Z             },
2026-06-23T09:38:02.9367439Z             {
2026-06-23T09:38:02.9367588Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9367697Z               "line": 1101
2026-06-23T09:38:02.9367802Z             },
2026-06-23T09:38:02.9367903Z             {
2026-06-23T09:38:02.9368045Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9368155Z               "line": 1143
2026-06-23T09:38:02.9368255Z             },
2026-06-23T09:38:02.9368355Z             {
2026-06-23T09:38:02.9368508Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9368621Z               "line": 1215
2026-06-23T09:38:02.9368726Z             },
2026-06-23T09:38:02.9368814Z             {
2026-06-23T09:38:02.9369060Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9369161Z               "line": 1228
2026-06-23T09:38:02.9369275Z             },
2026-06-23T09:38:02.9369375Z             {
2026-06-23T09:38:02.9369514Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9369622Z               "line": 1251
2026-06-23T09:38:02.9369726Z             },
2026-06-23T09:38:02.9369827Z             {
2026-06-23T09:38:02.9369958Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9370073Z               "line": 1277
2026-06-23T09:38:02.9370178Z             },
2026-06-23T09:38:02.9370277Z             {
2026-06-23T09:38:02.9370426Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9370531Z               "line": 1291
2026-06-23T09:38:02.9370640Z             },
2026-06-23T09:38:02.9370741Z             {
2026-06-23T09:38:02.9370879Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9370988Z               "line": 1315
2026-06-23T09:38:02.9371089Z             },
2026-06-23T09:38:02.9371194Z             {
2026-06-23T09:38:02.9371326Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9371437Z               "line": 1447
2026-06-23T09:38:02.9371542Z             },
2026-06-23T09:38:02.9371637Z             {
2026-06-23T09:38:02.9371776Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9371880Z               "line": 1623
2026-06-23T09:38:02.9371996Z             },
2026-06-23T09:38:02.9372100Z             {
2026-06-23T09:38:02.9372247Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9372353Z               "line": 1678
2026-06-23T09:38:02.9372457Z             },
2026-06-23T09:38:02.9372556Z             {
2026-06-23T09:38:02.9372699Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9372811Z               "line": 1724
2026-06-23T09:38:02.9372915Z             },
2026-06-23T09:38:02.9373022Z             {
2026-06-23T09:38:02.9373163Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9373269Z               "line": 1769
2026-06-23T09:38:02.9373379Z             },
2026-06-23T09:38:02.9373478Z             {
2026-06-23T09:38:02.9373627Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9373742Z               "line": 1813
2026-06-23T09:38:02.9373850Z             },
2026-06-23T09:38:02.9373956Z             {
2026-06-23T09:38:02.9374203Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9374309Z               "line": 1855
2026-06-23T09:38:02.9374408Z             },
2026-06-23T09:38:02.9374504Z             {
2026-06-23T09:38:02.9374643Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9374752Z               "line": 2423
2026-06-23T09:38:02.9374976Z             },
2026-06-23T09:38:02.9375080Z             {
2026-06-23T09:38:02.9375232Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9375335Z               "line": 217
2026-06-23T09:38:02.9375444Z             },
2026-06-23T09:38:02.9375540Z             {
2026-06-23T09:38:02.9375678Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9375787Z               "line": 233
2026-06-23T09:38:02.9375889Z             },
2026-06-23T09:38:02.9375993Z             {
2026-06-23T09:38:02.9376136Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9376255Z               "line": 254
2026-06-23T09:38:02.9376364Z             },
2026-06-23T09:38:02.9376461Z             {
2026-06-23T09:38:02.9376608Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9376713Z               "line": 265
2026-06-23T09:38:02.9376824Z             },
2026-06-23T09:38:02.9376927Z             {
2026-06-23T09:38:02.9377080Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9377190Z               "line": 278
2026-06-23T09:38:02.9377280Z             },
2026-06-23T09:38:02.9377390Z             {
2026-06-23T09:38:02.9377524Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9377633Z               "line": 289
2026-06-23T09:38:02.9377734Z             },
2026-06-23T09:38:02.9377834Z             {
2026-06-23T09:38:02.9377975Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9378080Z               "line": 301
2026-06-23T09:38:02.9378191Z             },
2026-06-23T09:38:02.9378295Z             {
2026-06-23T09:38:02.9378429Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9378534Z               "line": 312
2026-06-23T09:38:02.9378633Z             },
2026-06-23T09:38:02.9378725Z             {
2026-06-23T09:38:02.9378853Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9379078Z               "line": 323
2026-06-23T09:38:02.9379182Z             },
2026-06-23T09:38:02.9379282Z             {
2026-06-23T09:38:02.9379412Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9379515Z               "line": 332
2026-06-23T09:38:02.9379630Z             },
2026-06-23T09:38:02.9379731Z             {
2026-06-23T09:38:02.9379873Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9379979Z               "line": 342
2026-06-23T09:38:02.9380084Z             },
2026-06-23T09:38:02.9380182Z             {
2026-06-23T09:38:02.9380320Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-23T09:38:02.9380434Z               "line": 358
2026-06-23T09:38:02.9380528Z             },
2026-06-23T09:38:02.9380628Z             {
2026-06-23T09:38:02.9380772Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9380871Z               "line": 969
2026-06-23T09:38:02.9380972Z             },
2026-06-23T09:38:02.9381067Z             {
2026-06-23T09:38:02.9381214Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9381325Z               "line": 1005
2026-06-23T09:38:02.9381434Z             },
2026-06-23T09:38:02.9381533Z             {
2026-06-23T09:38:02.9381673Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:02.9381777Z               "line": 966
2026-06-23T09:38:02.9381878Z             },
2026-06-23T09:38:02.9381988Z             {
2026-06-23T09:38:02.9382125Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-23T09:38:02.9382231Z               "line": 147
2026-06-23T09:38:02.9382336Z             },
2026-06-23T09:38:02.9382546Z             {
2026-06-23T09:38:02.9382688Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-23T09:38:02.9382793Z               "line": 226
2026-06-23T09:38:02.9382890Z             },
2026-06-23T09:38:02.9382989Z             {
2026-06-23T09:38:02.9383135Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-23T09:38:02.9383334Z               "line": 295
2026-06-23T09:38:02.9383442Z             },
2026-06-23T09:38:02.9383543Z             {
2026-06-23T09:38:02.9383682Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-23T09:38:02.9383795Z               "line": 17
2026-06-23T09:38:02.9383897Z             },
2026-06-23T09:38:02.9384001Z             {
2026-06-23T09:38:02.9384139Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-23T09:38:02.9384254Z               "line": 104
2026-06-23T09:38:02.9384353Z             }
2026-06-23T09:38:02.9384444Z           ]
2026-06-23T09:38:02.9384536Z         }
2026-06-23T09:38:02.9384635Z       }
2026-06-23T09:38:02.9384745Z     },
2026-06-23T09:38:02.9384846Z     {
2026-06-23T09:38:02.9384988Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-23T09:38:02.9388103Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-23T09:38:02.9388251Z       "requiredStages": [
2026-06-23T09:38:02.9388357Z         "doc",
2026-06-23T09:38:02.9388464Z         "impl",
2026-06-23T09:38:02.9388573Z         "unit",
2026-06-23T09:38:02.9388684Z         "int"
2026-06-23T09:38:02.9388789Z       ],
2026-06-23T09:38:02.9388897Z       "stages": {
2026-06-23T09:38:02.9389085Z         "doc": {
2026-06-23T09:38:02.9389203Z           "complete": true,
2026-06-23T09:38:02.9389319Z           "evidence": [
2026-06-23T09:38:02.9389418Z             {
2026-06-23T09:38:02.9389551Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9389661Z               "line": 388
2026-06-23T09:38:02.9389776Z             }
2026-06-23T09:38:02.9389875Z           ]
2026-06-23T09:38:02.9389972Z         },
2026-06-23T09:38:02.9390085Z         "impl": {
2026-06-23T09:38:02.9390200Z           "complete": true,
2026-06-23T09:38:02.9390310Z           "evidence": [
2026-06-23T09:38:02.9390414Z             {
2026-06-23T09:38:02.9390568Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9390672Z               "line": 773
2026-06-23T09:38:02.9390775Z             },
2026-06-23T09:38:02.9390890Z             {
2026-06-23T09:38:02.9391036Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9391135Z               "line": 796
2026-06-23T09:38:02.9391232Z             }
2026-06-23T09:38:02.9391337Z           ]
2026-06-23T09:38:02.9391445Z         },
2026-06-23T09:38:02.9391551Z         "int": {
2026-06-23T09:38:02.9391665Z           "complete": true,
2026-06-23T09:38:02.9391769Z           "evidence": [
2026-06-23T09:38:02.9391875Z             {
2026-06-23T09:38:02.9392027Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T09:38:02.9392142Z               "line": 228
2026-06-23T09:38:02.9392375Z             },
2026-06-23T09:38:02.9392481Z             {
2026-06-23T09:38:02.9392619Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-23T09:38:02.9392728Z               "line": 468
2026-06-23T09:38:02.9392829Z             }
2026-06-23T09:38:02.9392934Z           ]
2026-06-23T09:38:02.9393038Z         },
2026-06-23T09:38:02.9393140Z         "unit": {
2026-06-23T09:38:02.9393348Z           "complete": true,
2026-06-23T09:38:02.9393459Z           "evidence": [
2026-06-23T09:38:02.9393563Z             {
2026-06-23T09:38:02.9393714Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:02.9393829Z               "line": 1495
2026-06-23T09:38:02.9393927Z             }
2026-06-23T09:38:02.9394036Z           ]
2026-06-23T09:38:02.9394127Z         }
2026-06-23T09:38:02.9394232Z       }
2026-06-23T09:38:02.9394336Z     },
2026-06-23T09:38:02.9394438Z     {
2026-06-23T09:38:02.9394580Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-23T09:38:02.9398210Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-23T09:38:02.9398358Z       "requiredStages": [
2026-06-23T09:38:02.9398462Z         "doc",
2026-06-23T09:38:02.9398568Z         "impl",
2026-06-23T09:38:02.9398682Z         "unit"
2026-06-23T09:38:02.9398782Z       ],
2026-06-23T09:38:02.9398888Z       "stages": {
2026-06-23T09:38:02.9399067Z         "doc": {
2026-06-23T09:38:02.9399172Z           "complete": true,
2026-06-23T09:38:02.9399287Z           "evidence": [
2026-06-23T09:38:02.9399387Z             {
2026-06-23T09:38:02.9399554Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9399668Z               "line": 395
2026-06-23T09:38:02.9399768Z             }
2026-06-23T09:38:02.9399874Z           ]
2026-06-23T09:38:02.9399979Z         },
2026-06-23T09:38:02.9400092Z         "impl": {
2026-06-23T09:38:02.9400203Z           "complete": true,
2026-06-23T09:38:02.9400307Z           "evidence": [
2026-06-23T09:38:02.9400407Z             {
2026-06-23T09:38:02.9400551Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9400660Z               "line": 75
2026-06-23T09:38:02.9400765Z             }
2026-06-23T09:38:02.9400875Z           ]
2026-06-23T09:38:02.9400984Z         },
2026-06-23T09:38:02.9401084Z         "int": {
2026-06-23T09:38:02.9401194Z           "complete": false,
2026-06-23T09:38:02.9401308Z           "evidence": []
2026-06-23T09:38:02.9401407Z         },
2026-06-23T09:38:02.9401517Z         "unit": {
2026-06-23T09:38:02.9401634Z           "complete": true,
2026-06-23T09:38:02.9401734Z           "evidence": [
2026-06-23T09:38:02.9401835Z             {
2026-06-23T09:38:02.9401977Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9402092Z               "line": 632
2026-06-23T09:38:02.9402202Z             }
2026-06-23T09:38:02.9402301Z           ]
2026-06-23T09:38:02.9402535Z         }
2026-06-23T09:38:02.9402640Z       }
2026-06-23T09:38:02.9402746Z     },
2026-06-23T09:38:02.9402850Z     {
2026-06-23T09:38:02.9402983Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-23T09:38:02.9403188Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-23T09:38:02.9403297Z       "requiredStages": [
2026-06-23T09:38:02.9403503Z         "impl",
2026-06-23T09:38:02.9403612Z         "unit"
2026-06-23T09:38:02.9403700Z       ],
2026-06-23T09:38:02.9403808Z       "stages": {
2026-06-23T09:38:02.9403918Z         "doc": {
2026-06-23T09:38:02.9404038Z           "complete": false,
2026-06-23T09:38:02.9404151Z           "evidence": []
2026-06-23T09:38:02.9404250Z         },
2026-06-23T09:38:02.9404351Z         "impl": {
2026-06-23T09:38:02.9404468Z           "complete": true,
2026-06-23T09:38:02.9404577Z           "evidence": [
2026-06-23T09:38:02.9404682Z             {
2026-06-23T09:38:02.9404840Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.9404949Z               "line": 172
2026-06-23T09:38:02.9405055Z             },
2026-06-23T09:38:02.9405154Z             {
2026-06-23T09:38:02.9405303Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.9405412Z               "line": 18
2026-06-23T09:38:02.9405511Z             },
2026-06-23T09:38:02.9405618Z             {
2026-06-23T09:38:02.9405755Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.9405860Z               "line": 100
2026-06-23T09:38:02.9405961Z             }
2026-06-23T09:38:02.9406074Z           ]
2026-06-23T09:38:02.9406184Z         },
2026-06-23T09:38:02.9406285Z         "int": {
2026-06-23T09:38:02.9406403Z           "complete": false,
2026-06-23T09:38:02.9406519Z           "evidence": []
2026-06-23T09:38:02.9406624Z         },
2026-06-23T09:38:02.9406727Z         "unit": {
2026-06-23T09:38:02.9406836Z           "complete": true,
2026-06-23T09:38:02.9406946Z           "evidence": [
2026-06-23T09:38:02.9407049Z             {
2026-06-23T09:38:02.9407206Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:02.9407312Z               "line": 857
2026-06-23T09:38:02.9407420Z             },
2026-06-23T09:38:02.9407526Z             {
2026-06-23T09:38:02.9407665Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.9407773Z               "line": 161
2026-06-23T09:38:02.9407879Z             },
2026-06-23T09:38:02.9407984Z             {
2026-06-23T09:38:02.9408117Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.9408223Z               "line": 233
2026-06-23T09:38:02.9408322Z             }
2026-06-23T09:38:02.9408417Z           ]
2026-06-23T09:38:02.9408528Z         }
2026-06-23T09:38:02.9408632Z       }
2026-06-23T09:38:02.9408737Z     },
2026-06-23T09:38:02.9408838Z     {
2026-06-23T09:38:02.9409066Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-23T09:38:02.9409511Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-23T09:38:02.9409646Z       "requiredStages": [
2026-06-23T09:38:02.9409751Z         "impl",
2026-06-23T09:38:02.9409847Z         "unit"
2026-06-23T09:38:02.9409951Z       ],
2026-06-23T09:38:02.9410056Z       "stages": {
2026-06-23T09:38:02.9410167Z         "doc": {
2026-06-23T09:38:02.9410280Z           "complete": true,
2026-06-23T09:38:02.9410386Z           "evidence": [
2026-06-23T09:38:02.9410495Z             {
2026-06-23T09:38:02.9410623Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9410734Z               "line": 220
2026-06-23T09:38:02.9410829Z             }
2026-06-23T09:38:02.9410938Z           ]
2026-06-23T09:38:02.9411039Z         },
2026-06-23T09:38:02.9411144Z         "impl": {
2026-06-23T09:38:02.9411263Z           "complete": true,
2026-06-23T09:38:02.9411364Z           "evidence": [
2026-06-23T09:38:02.9411468Z             {
2026-06-23T09:38:02.9411621Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:02.9411834Z               "line": 318
2026-06-23T09:38:02.9411939Z             },
2026-06-23T09:38:02.9412044Z             {
2026-06-23T09:38:02.9412194Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:02.9412299Z               "line": 359
2026-06-23T09:38:02.9412409Z             },
2026-06-23T09:38:02.9412599Z             {
2026-06-23T09:38:02.9412748Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:02.9412861Z               "line": 581
2026-06-23T09:38:02.9412967Z             },
2026-06-23T09:38:02.9413077Z             {
2026-06-23T09:38:02.9413219Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T09:38:02.9413330Z               "line": 77
2026-06-23T09:38:02.9413429Z             }
2026-06-23T09:38:02.9413534Z           ]
2026-06-23T09:38:02.9413640Z         },
2026-06-23T09:38:02.9413754Z         "int": {
2026-06-23T09:38:02.9413867Z           "complete": false,
2026-06-23T09:38:02.9413983Z           "evidence": []
2026-06-23T09:38:02.9414092Z         },
2026-06-23T09:38:02.9414182Z         "unit": {
2026-06-23T09:38:02.9414293Z           "complete": true,
2026-06-23T09:38:02.9414401Z           "evidence": [
2026-06-23T09:38:02.9414507Z             {
2026-06-23T09:38:02.9414650Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:02.9414749Z               "line": 750
2026-06-23T09:38:02.9414858Z             },
2026-06-23T09:38:02.9414963Z             {
2026-06-23T09:38:02.9415108Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:02.9415214Z               "line": 788
2026-06-23T09:38:02.9415319Z             },
2026-06-23T09:38:02.9415423Z             {
2026-06-23T09:38:02.9415558Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T09:38:02.9415667Z               "line": 166
2026-06-23T09:38:02.9415771Z             }
2026-06-23T09:38:02.9415882Z           ]
2026-06-23T09:38:02.9415982Z         }
2026-06-23T09:38:02.9416081Z       }
2026-06-23T09:38:02.9416197Z     },
2026-06-23T09:38:02.9416296Z     {
2026-06-23T09:38:02.9416444Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-23T09:38:02.9417035Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-23T09:38:02.9417160Z       "requiredStages": [
2026-06-23T09:38:02.9417273Z         "impl",
2026-06-23T09:38:02.9417377Z         "unit"
2026-06-23T09:38:02.9417482Z       ],
2026-06-23T09:38:02.9417586Z       "stages": {
2026-06-23T09:38:02.9417694Z         "doc": {
2026-06-23T09:38:02.9417804Z           "complete": false,
2026-06-23T09:38:02.9417910Z           "evidence": []
2026-06-23T09:38:02.9418009Z         },
2026-06-23T09:38:02.9418115Z         "impl": {
2026-06-23T09:38:02.9418234Z           "complete": true,
2026-06-23T09:38:02.9418348Z           "evidence": [
2026-06-23T09:38:02.9418444Z             {
2026-06-23T09:38:02.9418596Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-23T09:38:02.9418706Z               "line": 22
2026-06-23T09:38:02.9418816Z             },
2026-06-23T09:38:02.9418920Z             {
2026-06-23T09:38:02.9419145Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:02.9419254Z               "line": 487
2026-06-23T09:38:02.9419370Z             },
2026-06-23T09:38:02.9419464Z             {
2026-06-23T09:38:02.9419597Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T09:38:02.9419708Z               "line": 17
2026-06-23T09:38:02.9419812Z             },
2026-06-23T09:38:02.9419916Z             {
2026-06-23T09:38:02.9420061Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T09:38:02.9420173Z               "line": 147
2026-06-23T09:38:02.9420277Z             },
2026-06-23T09:38:02.9420389Z             {
2026-06-23T09:38:02.9420554Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9420965Z               "line": 226
2026-06-23T09:38:02.9421070Z             },
2026-06-23T09:38:02.9421174Z             {
2026-06-23T09:38:02.9421333Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9421437Z               "line": 251
2026-06-23T09:38:02.9421537Z             },
2026-06-23T09:38:02.9421643Z             {
2026-06-23T09:38:02.9421890Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9422000Z               "line": 277
2026-06-23T09:38:02.9422094Z             },
2026-06-23T09:38:02.9422200Z             {
2026-06-23T09:38:02.9422343Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:02.9422452Z               "line": 124
2026-06-23T09:38:02.9422547Z             },
2026-06-23T09:38:02.9422651Z             {
2026-06-23T09:38:02.9422802Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:02.9422907Z               "line": 224
2026-06-23T09:38:02.9423013Z             }
2026-06-23T09:38:02.9423126Z           ]
2026-06-23T09:38:02.9423236Z         },
2026-06-23T09:38:02.9423346Z         "int": {
2026-06-23T09:38:02.9423459Z           "complete": false,
2026-06-23T09:38:02.9423580Z           "evidence": []
2026-06-23T09:38:02.9423675Z         },
2026-06-23T09:38:02.9423784Z         "unit": {
2026-06-23T09:38:02.9423895Z           "complete": true,
2026-06-23T09:38:02.9424008Z           "evidence": [
2026-06-23T09:38:02.9424118Z             {
2026-06-23T09:38:02.9424270Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-23T09:38:02.9424375Z               "line": 63
2026-06-23T09:38:02.9424481Z             },
2026-06-23T09:38:02.9424576Z             {
2026-06-23T09:38:02.9424728Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-23T09:38:02.9424830Z               "line": 73
2026-06-23T09:38:02.9424942Z             },
2026-06-23T09:38:02.9425043Z             {
2026-06-23T09:38:02.9425192Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-23T09:38:02.9425295Z               "line": 85
2026-06-23T09:38:02.9425399Z             },
2026-06-23T09:38:02.9425509Z             {
2026-06-23T09:38:02.9425645Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T09:38:02.9425764Z               "line": 346
2026-06-23T09:38:02.9425865Z             },
2026-06-23T09:38:02.9425974Z             {
2026-06-23T09:38:02.9426127Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T09:38:02.9426237Z               "line": 281
2026-06-23T09:38:02.9426345Z             },
2026-06-23T09:38:02.9426452Z             {
2026-06-23T09:38:02.9426603Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T09:38:02.9426709Z               "line": 322
2026-06-23T09:38:02.9426823Z             },
2026-06-23T09:38:02.9426923Z             {
2026-06-23T09:38:02.9427072Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-23T09:38:02.9427185Z               "line": 360
2026-06-23T09:38:02.9427285Z             },
2026-06-23T09:38:02.9427406Z             {
2026-06-23T09:38:02.9427542Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9427654Z               "line": 688
2026-06-23T09:38:02.9427753Z             },
2026-06-23T09:38:02.9427857Z             {
2026-06-23T09:38:02.9428009Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:02.9428118Z               "line": 397
2026-06-23T09:38:02.9428216Z             },
2026-06-23T09:38:02.9428317Z             {
2026-06-23T09:38:02.9428470Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:02.9428564Z               "line": 440
2026-06-23T09:38:02.9428670Z             }
2026-06-23T09:38:02.9428775Z           ]
2026-06-23T09:38:02.9428865Z         }
2026-06-23T09:38:02.9429052Z       }
2026-06-23T09:38:02.9429161Z     },
2026-06-23T09:38:02.9429256Z     {
2026-06-23T09:38:02.9429385Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-23T09:38:02.9429634Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-23T09:38:02.9429866Z       "requiredStages": [
2026-06-23T09:38:02.9429972Z         "impl",
2026-06-23T09:38:02.9430081Z         "unit"
2026-06-23T09:38:02.9430181Z       ],
2026-06-23T09:38:02.9430287Z       "stages": {
2026-06-23T09:38:02.9430391Z         "doc": {
2026-06-23T09:38:02.9430506Z           "complete": false,
2026-06-23T09:38:02.9430719Z           "evidence": []
2026-06-23T09:38:02.9430824Z         },
2026-06-23T09:38:02.9430929Z         "impl": {
2026-06-23T09:38:02.9431044Z           "complete": true,
2026-06-23T09:38:02.9431148Z           "evidence": [
2026-06-23T09:38:02.9431254Z             {
2026-06-23T09:38:02.9431401Z               "path": "crates/spt-term/src/reader.rs",
2026-06-23T09:38:02.9431511Z               "line": 169
2026-06-23T09:38:02.9431607Z             }
2026-06-23T09:38:02.9431711Z           ]
2026-06-23T09:38:02.9431816Z         },
2026-06-23T09:38:02.9431921Z         "int": {
2026-06-23T09:38:02.9432035Z           "complete": true,
2026-06-23T09:38:02.9432155Z           "evidence": [
2026-06-23T09:38:02.9432255Z             {
2026-06-23T09:38:02.9435207Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-23T09:38:02.9435352Z               "line": 44
2026-06-23T09:38:02.9435460Z             },
2026-06-23T09:38:02.9435565Z             {
2026-06-23T09:38:02.9435705Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-23T09:38:02.9435836Z               "line": 66
2026-06-23T09:38:02.9435945Z             }
2026-06-23T09:38:02.9436031Z           ]
2026-06-23T09:38:02.9436134Z         },
2026-06-23T09:38:02.9436243Z         "unit": {
2026-06-23T09:38:02.9436363Z           "complete": true,
2026-06-23T09:38:02.9436468Z           "evidence": [
2026-06-23T09:38:02.9436577Z             {
2026-06-23T09:38:02.9436726Z               "path": "crates/spt-term/src/reader.rs",
2026-06-23T09:38:02.9436839Z               "line": 186
2026-06-23T09:38:02.9436940Z             },
2026-06-23T09:38:02.9437040Z             {
2026-06-23T09:38:02.9437187Z               "path": "crates/spt-term/src/reader.rs",
2026-06-23T09:38:02.9437293Z               "line": 238
2026-06-23T09:38:02.9437397Z             },
2026-06-23T09:38:02.9437502Z             {
2026-06-23T09:38:02.9437632Z               "path": "crates/spt-term/src/reader.rs",
2026-06-23T09:38:02.9437741Z               "line": 266
2026-06-23T09:38:02.9437841Z             }
2026-06-23T09:38:02.9437937Z           ]
2026-06-23T09:38:02.9438036Z         }
2026-06-23T09:38:02.9438141Z       }
2026-06-23T09:38:02.9438242Z     },
2026-06-23T09:38:02.9438328Z     {
2026-06-23T09:38:02.9438474Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-23T09:38:02.9445134Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-23T09:38:02.9445534Z       "requiredStages": [
2026-06-23T09:38:02.9445635Z         "impl",
2026-06-23T09:38:02.9445748Z         "unit",
2026-06-23T09:38:02.9445853Z         "int"
2026-06-23T09:38:02.9445969Z       ],
2026-06-23T09:38:02.9446072Z       "stages": {
2026-06-23T09:38:02.9446188Z         "doc": {
2026-06-23T09:38:02.9446303Z           "complete": false,
2026-06-23T09:38:02.9446420Z           "evidence": []
2026-06-23T09:38:02.9446524Z         },
2026-06-23T09:38:02.9446625Z         "impl": {
2026-06-23T09:38:02.9446746Z           "complete": true,
2026-06-23T09:38:02.9446851Z           "evidence": [
2026-06-23T09:38:02.9446952Z             {
2026-06-23T09:38:02.9447104Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:02.9447209Z               "line": 109
2026-06-23T09:38:02.9447314Z             },
2026-06-23T09:38:02.9447418Z             {
2026-06-23T09:38:02.9447563Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:02.9447672Z               "line": 156
2026-06-23T09:38:02.9447781Z             },
2026-06-23T09:38:02.9447873Z             {
2026-06-23T09:38:02.9448015Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:02.9448119Z               "line": 261
2026-06-23T09:38:02.9448212Z             },
2026-06-23T09:38:02.9448315Z             {
2026-06-23T09:38:02.9448454Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9448554Z               "line": 954
2026-06-23T09:38:02.9448648Z             }
2026-06-23T09:38:02.9448754Z           ]
2026-06-23T09:38:02.9448856Z         },
2026-06-23T09:38:02.9449025Z         "int": {
2026-06-23T09:38:02.9449139Z           "complete": true,
2026-06-23T09:38:02.9449242Z           "evidence": [
2026-06-23T09:38:02.9449351Z             {
2026-06-23T09:38:02.9449499Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:02.9449609Z               "line": 1057
2026-06-23T09:38:02.9449713Z             }
2026-06-23T09:38:02.9449814Z           ]
2026-06-23T09:38:02.9449919Z         },
2026-06-23T09:38:02.9450023Z         "unit": {
2026-06-23T09:38:02.9450134Z           "complete": true,
2026-06-23T09:38:02.9450234Z           "evidence": [
2026-06-23T09:38:02.9450333Z             {
2026-06-23T09:38:02.9450472Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9450567Z               "line": 1526
2026-06-23T09:38:02.9450672Z             }
2026-06-23T09:38:02.9450773Z           ]
2026-06-23T09:38:02.9450882Z         }
2026-06-23T09:38:02.9450982Z       }
2026-06-23T09:38:02.9451074Z     },
2026-06-23T09:38:02.9451173Z     {
2026-06-23T09:38:02.9451345Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-23T09:38:02.9454217Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-23T09:38:02.9454539Z       "requiredStages": [],
2026-06-23T09:38:02.9454645Z       "stages": {
2026-06-23T09:38:02.9454745Z         "doc": {
2026-06-23T09:38:02.9454854Z           "complete": false,
2026-06-23T09:38:02.9454970Z           "evidence": []
2026-06-23T09:38:02.9455069Z         },
2026-06-23T09:38:02.9455173Z         "impl": {
2026-06-23T09:38:02.9455284Z           "complete": false,
2026-06-23T09:38:02.9455388Z           "evidence": []
2026-06-23T09:38:02.9455493Z         },
2026-06-23T09:38:02.9455603Z         "int": {
2026-06-23T09:38:02.9455718Z           "complete": false,
2026-06-23T09:38:02.9455827Z           "evidence": []
2026-06-23T09:38:02.9455928Z         },
2026-06-23T09:38:02.9456032Z         "unit": {
2026-06-23T09:38:02.9456147Z           "complete": false,
2026-06-23T09:38:02.9456252Z           "evidence": []
2026-06-23T09:38:02.9456352Z         }
2026-06-23T09:38:02.9456457Z       }
2026-06-23T09:38:02.9456558Z     },
2026-06-23T09:38:02.9456661Z     {
2026-06-23T09:38:02.9456811Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-23T09:38:02.9461123Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-23T09:38:02.9461271Z       "requiredStages": [],
2026-06-23T09:38:02.9461375Z       "stages": {
2026-06-23T09:38:02.9461485Z         "doc": {
2026-06-23T09:38:02.9461595Z           "complete": false,
2026-06-23T09:38:02.9461704Z           "evidence": []
2026-06-23T09:38:02.9461804Z         },
2026-06-23T09:38:02.9461910Z         "impl": {
2026-06-23T09:38:02.9462024Z           "complete": false,
2026-06-23T09:38:02.9462133Z           "evidence": []
2026-06-23T09:38:02.9462239Z         },
2026-06-23T09:38:02.9462343Z         "int": {
2026-06-23T09:38:02.9462457Z           "complete": false,
2026-06-23T09:38:02.9462561Z           "evidence": []
2026-06-23T09:38:02.9462663Z         },
2026-06-23T09:38:02.9462762Z         "unit": {
2026-06-23T09:38:02.9462871Z           "complete": false,
2026-06-23T09:38:02.9462986Z           "evidence": []
2026-06-23T09:38:02.9463086Z         }
2026-06-23T09:38:02.9463191Z       }
2026-06-23T09:38:02.9463291Z     },
2026-06-23T09:38:02.9463391Z     {
2026-06-23T09:38:02.9463545Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-23T09:38:02.9477429Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-23T09:38:02.9478035Z       "requiredStages": [
2026-06-23T09:38:02.9478133Z         "doc",
2026-06-23T09:38:02.9478248Z         "impl",
2026-06-23T09:38:02.9478352Z         "unit",
2026-06-23T09:38:02.9478455Z         "int"
2026-06-23T09:38:02.9478560Z       ],
2026-06-23T09:38:02.9478661Z       "stages": {
2026-06-23T09:38:02.9478770Z         "doc": {
2026-06-23T09:38:02.9478875Z           "complete": true,
2026-06-23T09:38:02.9479075Z           "evidence": [
2026-06-23T09:38:02.9479175Z             {
2026-06-23T09:38:02.9479305Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9479409Z               "line": 468
2026-06-23T09:38:02.9479514Z             }
2026-06-23T09:38:02.9479624Z           ]
2026-06-23T09:38:02.9479719Z         },
2026-06-23T09:38:02.9479819Z         "impl": {
2026-06-23T09:38:02.9479925Z           "complete": true,
2026-06-23T09:38:02.9480039Z           "evidence": [
2026-06-23T09:38:02.9480134Z             {
2026-06-23T09:38:02.9480282Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9480391Z               "line": 348
2026-06-23T09:38:02.9480493Z             },
2026-06-23T09:38:02.9480602Z             {
2026-06-23T09:38:02.9480738Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9480848Z               "line": 1310
2026-06-23T09:38:02.9480961Z             },
2026-06-23T09:38:02.9481065Z             {
2026-06-23T09:38:02.9481199Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9481304Z               "line": 760
2026-06-23T09:38:02.9481398Z             }
2026-06-23T09:38:02.9481500Z           ]
2026-06-23T09:38:02.9481605Z         },
2026-06-23T09:38:02.9481704Z         "int": {
2026-06-23T09:38:02.9481810Z           "complete": true,
2026-06-23T09:38:02.9481914Z           "evidence": [
2026-06-23T09:38:02.9482018Z             {
2026-06-23T09:38:02.9482162Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:02.9482267Z               "line": 1212
2026-06-23T09:38:02.9482371Z             },
2026-06-23T09:38:02.9482477Z             {
2026-06-23T09:38:02.9482619Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:02.9482735Z               "line": 1313
2026-06-23T09:38:02.9482830Z             },
2026-06-23T09:38:02.9482934Z             {
2026-06-23T09:38:02.9483069Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:02.9483177Z               "line": 1177
2026-06-23T09:38:02.9483282Z             }
2026-06-23T09:38:02.9483384Z           ]
2026-06-23T09:38:02.9483487Z         },
2026-06-23T09:38:02.9483587Z         "unit": {
2026-06-23T09:38:02.9483696Z           "complete": true,
2026-06-23T09:38:02.9483802Z           "evidence": [
2026-06-23T09:38:02.9483901Z             {
2026-06-23T09:38:02.9484045Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9484150Z               "line": 3067
2026-06-23T09:38:02.9484263Z             }
2026-06-23T09:38:02.9484360Z           ]
2026-06-23T09:38:02.9484460Z         }
2026-06-23T09:38:02.9484559Z       }
2026-06-23T09:38:02.9484665Z     },
2026-06-23T09:38:02.9484764Z     {
2026-06-23T09:38:02.9484902Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-23T09:38:02.9485366Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-23T09:38:02.9485575Z       "requiredStages": [
2026-06-23T09:38:02.9485681Z         "impl",
2026-06-23T09:38:02.9485784Z         "unit",
2026-06-23T09:38:02.9485893Z         "int"
2026-06-23T09:38:02.9486002Z       ],
2026-06-23T09:38:02.9486110Z       "stages": {
2026-06-23T09:38:02.9486330Z         "doc": {
2026-06-23T09:38:02.9486444Z           "complete": false,
2026-06-23T09:38:02.9486554Z           "evidence": []
2026-06-23T09:38:02.9486655Z         },
2026-06-23T09:38:02.9486763Z         "impl": {
2026-06-23T09:38:02.9486878Z           "complete": true,
2026-06-23T09:38:02.9486983Z           "evidence": [
2026-06-23T09:38:02.9487087Z             {
2026-06-23T09:38:02.9487232Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9487341Z               "line": 370
2026-06-23T09:38:02.9487445Z             },
2026-06-23T09:38:02.9487551Z             {
2026-06-23T09:38:02.9487707Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9487818Z               "line": 424
2026-06-23T09:38:02.9487918Z             },
2026-06-23T09:38:02.9488017Z             {
2026-06-23T09:38:02.9488171Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:02.9488275Z               "line": 79
2026-06-23T09:38:02.9488390Z             },
2026-06-23T09:38:02.9488491Z             {
2026-06-23T09:38:02.9488627Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:02.9488731Z               "line": 52
2026-06-23T09:38:02.9488832Z             },
2026-06-23T09:38:02.9488935Z             {
2026-06-23T09:38:02.9489164Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9489273Z               "line": 263
2026-06-23T09:38:02.9489382Z             },
2026-06-23T09:38:02.9489488Z             {
2026-06-23T09:38:02.9489635Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9489736Z               "line": 27
2026-06-23T09:38:02.9489846Z             },
2026-06-23T09:38:02.9489950Z             {
2026-06-23T09:38:02.9490084Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9490193Z               "line": 94
2026-06-23T09:38:02.9490294Z             },
2026-06-23T09:38:02.9490394Z             {
2026-06-23T09:38:02.9490537Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9490651Z               "line": 117
2026-06-23T09:38:02.9490748Z             },
2026-06-23T09:38:02.9490842Z             {
2026-06-23T09:38:02.9490985Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9491091Z               "line": 116
2026-06-23T09:38:02.9491194Z             }
2026-06-23T09:38:02.9491298Z           ]
2026-06-23T09:38:02.9491399Z         },
2026-06-23T09:38:02.9491511Z         "int": {
2026-06-23T09:38:02.9491615Z           "complete": true,
2026-06-23T09:38:02.9491725Z           "evidence": [
2026-06-23T09:38:02.9491831Z             {
2026-06-23T09:38:02.9491992Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-23T09:38:02.9492098Z               "line": 43
2026-06-23T09:38:02.9492202Z             }
2026-06-23T09:38:02.9492312Z           ]
2026-06-23T09:38:02.9492413Z         },
2026-06-23T09:38:02.9492526Z         "unit": {
2026-06-23T09:38:02.9492642Z           "complete": true,
2026-06-23T09:38:02.9492760Z           "evidence": [
2026-06-23T09:38:02.9492860Z             {
2026-06-23T09:38:02.9493009Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9493123Z               "line": 889
2026-06-23T09:38:02.9493227Z             },
2026-06-23T09:38:02.9493324Z             {
2026-06-23T09:38:02.9493451Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9493562Z               "line": 495
2026-06-23T09:38:02.9493663Z             },
2026-06-23T09:38:02.9493770Z             {
2026-06-23T09:38:02.9493915Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9494123Z               "line": 142
2026-06-23T09:38:02.9494218Z             },
2026-06-23T09:38:02.9494319Z             {
2026-06-23T09:38:02.9494446Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9494547Z               "line": 161
2026-06-23T09:38:02.9494652Z             },
2026-06-23T09:38:02.9494761Z             {
2026-06-23T09:38:02.9494986Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9495104Z               "line": 178
2026-06-23T09:38:02.9495206Z             },
2026-06-23T09:38:02.9495310Z             {
2026-06-23T09:38:02.9495448Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9495554Z               "line": 205
2026-06-23T09:38:02.9495653Z             },
2026-06-23T09:38:02.9495744Z             {
2026-06-23T09:38:02.9495893Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-23T09:38:02.9496006Z               "line": 285
2026-06-23T09:38:02.9496111Z             },
2026-06-23T09:38:02.9496222Z             {
2026-06-23T09:38:02.9496401Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9496535Z               "line": 229
2026-06-23T09:38:02.9496632Z             }
2026-06-23T09:38:02.9496741Z           ]
2026-06-23T09:38:02.9496838Z         }
2026-06-23T09:38:02.9496943Z       }
2026-06-23T09:38:02.9497042Z     },
2026-06-23T09:38:02.9497152Z     {
2026-06-23T09:38:02.9497304Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-23T09:38:02.9497972Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-23T09:38:02.9498097Z       "requiredStages": [
2026-06-23T09:38:02.9498201Z         "impl",
2026-06-23T09:38:02.9498311Z         "unit"
2026-06-23T09:38:02.9498417Z       ],
2026-06-23T09:38:02.9498520Z       "stages": {
2026-06-23T09:38:02.9498630Z         "doc": {
2026-06-23T09:38:02.9498741Z           "complete": false,
2026-06-23T09:38:02.9498849Z           "evidence": []
2026-06-23T09:38:02.9499022Z         },
2026-06-23T09:38:02.9499127Z         "impl": {
2026-06-23T09:38:02.9499235Z           "complete": true,
2026-06-23T09:38:02.9499344Z           "evidence": [
2026-06-23T09:38:02.9499444Z             {
2026-06-23T09:38:02.9499594Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9499700Z               "line": 1315
2026-06-23T09:38:02.9499796Z             },
2026-06-23T09:38:02.9499895Z             {
2026-06-23T09:38:02.9500044Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9500153Z               "line": 1577
2026-06-23T09:38:02.9500257Z             }
2026-06-23T09:38:02.9500363Z           ]
2026-06-23T09:38:02.9500463Z         },
2026-06-23T09:38:02.9500567Z         "int": {
2026-06-23T09:38:02.9500674Z           "complete": false,
2026-06-23T09:38:02.9500773Z           "evidence": []
2026-06-23T09:38:02.9500877Z         },
2026-06-23T09:38:02.9500984Z         "unit": {
2026-06-23T09:38:02.9501102Z           "complete": true,
2026-06-23T09:38:02.9501211Z           "evidence": [
2026-06-23T09:38:02.9501317Z             {
2026-06-23T09:38:02.9501468Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-23T09:38:02.9501575Z               "line": 161
2026-06-23T09:38:02.9501684Z             }
2026-06-23T09:38:02.9501788Z           ]
2026-06-23T09:38:02.9501892Z         }
2026-06-23T09:38:02.9501992Z       }
2026-06-23T09:38:02.9502100Z     },
2026-06-23T09:38:02.9502204Z     {
2026-06-23T09:38:02.9502348Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-23T09:38:02.9504102Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-23T09:38:02.9504345Z       "requiredStages": [
2026-06-23T09:38:02.9504542Z         "impl",
2026-06-23T09:38:02.9504650Z         "unit"
2026-06-23T09:38:02.9504749Z       ],
2026-06-23T09:38:02.9504855Z       "stages": {
2026-06-23T09:38:02.9504955Z         "doc": {
2026-06-23T09:38:02.9505074Z           "complete": false,
2026-06-23T09:38:02.9505175Z           "evidence": []
2026-06-23T09:38:02.9505275Z         },
2026-06-23T09:38:02.9505388Z         "impl": {
2026-06-23T09:38:02.9505494Z           "complete": true,
2026-06-23T09:38:02.9505604Z           "evidence": [
2026-06-23T09:38:02.9505708Z             {
2026-06-23T09:38:02.9505861Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:02.9505979Z               "line": 257
2026-06-23T09:38:02.9506086Z             }
2026-06-23T09:38:02.9506195Z           ]
2026-06-23T09:38:02.9506294Z         },
2026-06-23T09:38:02.9506406Z         "int": {
2026-06-23T09:38:02.9506514Z           "complete": false,
2026-06-23T09:38:02.9506633Z           "evidence": []
2026-06-23T09:38:02.9506725Z         },
2026-06-23T09:38:02.9506834Z         "unit": {
2026-06-23T09:38:02.9506937Z           "complete": true,
2026-06-23T09:38:02.9507038Z           "evidence": [
2026-06-23T09:38:02.9507142Z             {
2026-06-23T09:38:02.9507288Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:02.9507398Z               "line": 360
2026-06-23T09:38:02.9507508Z             }
2026-06-23T09:38:02.9507607Z           ]
2026-06-23T09:38:02.9507707Z         }
2026-06-23T09:38:02.9507808Z       }
2026-06-23T09:38:02.9507907Z     },
2026-06-23T09:38:02.9508003Z     {
2026-06-23T09:38:02.9508147Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-23T09:38:02.9510041Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-23T09:38:02.9510178Z       "requiredStages": [
2026-06-23T09:38:02.9510279Z         "impl",
2026-06-23T09:38:02.9510384Z         "unit"
2026-06-23T09:38:02.9510488Z       ],
2026-06-23T09:38:02.9510595Z       "stages": {
2026-06-23T09:38:02.9510699Z         "doc": {
2026-06-23T09:38:02.9510822Z           "complete": false,
2026-06-23T09:38:02.9510924Z           "evidence": []
2026-06-23T09:38:02.9511028Z         },
2026-06-23T09:38:02.9511137Z         "impl": {
2026-06-23T09:38:02.9511243Z           "complete": true,
2026-06-23T09:38:02.9511347Z           "evidence": [
2026-06-23T09:38:02.9511452Z             {
2026-06-23T09:38:02.9511605Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9511714Z               "line": 1018
2026-06-23T09:38:02.9511829Z             },
2026-06-23T09:38:02.9511934Z             {
2026-06-23T09:38:02.9512067Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9512178Z               "line": 283
2026-06-23T09:38:02.9512286Z             },
2026-06-23T09:38:02.9512385Z             {
2026-06-23T09:38:02.9512524Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9512631Z               "line": 316
2026-06-23T09:38:02.9512740Z             },
2026-06-23T09:38:02.9512841Z             {
2026-06-23T09:38:02.9512989Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-23T09:38:02.9513214Z               "line": 26
2026-06-23T09:38:02.9513317Z             }
2026-06-23T09:38:02.9513418Z           ]
2026-06-23T09:38:02.9513523Z         },
2026-06-23T09:38:02.9513632Z         "int": {
2026-06-23T09:38:02.9513738Z           "complete": false,
2026-06-23T09:38:02.9513847Z           "evidence": []
2026-06-23T09:38:02.9513938Z         },
2026-06-23T09:38:02.9514139Z         "unit": {
2026-06-23T09:38:02.9514281Z           "complete": true,
2026-06-23T09:38:02.9514391Z           "evidence": [
2026-06-23T09:38:02.9514505Z             {
2026-06-23T09:38:02.9514639Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-23T09:38:02.9514750Z               "line": 271
2026-06-23T09:38:02.9514857Z             },
2026-06-23T09:38:02.9514953Z             {
2026-06-23T09:38:02.9515092Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-23T09:38:02.9515191Z               "line": 348
2026-06-23T09:38:02.9515300Z             }
2026-06-23T09:38:02.9515400Z           ]
2026-06-23T09:38:02.9515501Z         }
2026-06-23T09:38:02.9515595Z       }
2026-06-23T09:38:02.9515697Z     },
2026-06-23T09:38:02.9515796Z     {
2026-06-23T09:38:02.9515924Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-23T09:38:02.9516145Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-23T09:38:02.9516253Z       "requiredStages": [
2026-06-23T09:38:02.9516359Z         "impl",
2026-06-23T09:38:02.9516463Z         "unit"
2026-06-23T09:38:02.9516568Z       ],
2026-06-23T09:38:02.9516674Z       "stages": {
2026-06-23T09:38:02.9516783Z         "doc": {
2026-06-23T09:38:02.9516897Z           "complete": false,
2026-06-23T09:38:02.9516999Z           "evidence": []
2026-06-23T09:38:02.9517103Z         },
2026-06-23T09:38:02.9517207Z         "impl": {
2026-06-23T09:38:02.9517323Z           "complete": true,
2026-06-23T09:38:02.9517436Z           "evidence": [
2026-06-23T09:38:02.9517536Z             {
2026-06-23T09:38:02.9517679Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9517790Z               "line": 40
2026-06-23T09:38:02.9517895Z             },
2026-06-23T09:38:02.9517997Z             {
2026-06-23T09:38:02.9518138Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9518249Z               "line": 103
2026-06-23T09:38:02.9518353Z             },
2026-06-23T09:38:02.9518448Z             {
2026-06-23T09:38:02.9518583Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9518697Z               "line": 218
2026-06-23T09:38:02.9518801Z             },
2026-06-23T09:38:02.9518902Z             {
2026-06-23T09:38:02.9519159Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9519265Z               "line": 323
2026-06-23T09:38:02.9519374Z             }
2026-06-23T09:38:02.9519474Z           ]
2026-06-23T09:38:02.9519585Z         },
2026-06-23T09:38:02.9519688Z         "int": {
2026-06-23T09:38:02.9519803Z           "complete": false,
2026-06-23T09:38:02.9519914Z           "evidence": []
2026-06-23T09:38:02.9520027Z         },
2026-06-23T09:38:02.9520128Z         "unit": {
2026-06-23T09:38:02.9520238Z           "complete": true,
2026-06-23T09:38:02.9520350Z           "evidence": [
2026-06-23T09:38:02.9520450Z             {
2026-06-23T09:38:02.9520588Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9520696Z               "line": 361
2026-06-23T09:38:02.9520801Z             },
2026-06-23T09:38:02.9520916Z             {
2026-06-23T09:38:02.9521049Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9521164Z               "line": 433
2026-06-23T09:38:02.9521264Z             },
2026-06-23T09:38:02.9521373Z             {
2026-06-23T09:38:02.9521503Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9521612Z               "line": 496
2026-06-23T09:38:02.9521711Z             },
2026-06-23T09:38:02.9521818Z             {
2026-06-23T09:38:02.9521950Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9522147Z               "line": 517
2026-06-23T09:38:02.9522250Z             }
2026-06-23T09:38:02.9522341Z           ]
2026-06-23T09:38:02.9522447Z         }
2026-06-23T09:38:02.9522541Z       }
2026-06-23T09:38:02.9522646Z     },
2026-06-23T09:38:02.9522753Z     {
2026-06-23T09:38:02.9522889Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-23T09:38:02.9525232Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-23T09:38:02.9525465Z       "requiredStages": [
2026-06-23T09:38:02.9525572Z         "impl",
2026-06-23T09:38:02.9525676Z         "unit"
2026-06-23T09:38:02.9525784Z       ],
2026-06-23T09:38:02.9525894Z       "stages": {
2026-06-23T09:38:02.9526004Z         "doc": {
2026-06-23T09:38:02.9526118Z           "complete": false,
2026-06-23T09:38:02.9526227Z           "evidence": []
2026-06-23T09:38:02.9526333Z         },
2026-06-23T09:38:02.9526447Z         "impl": {
2026-06-23T09:38:02.9526557Z           "complete": true,
2026-06-23T09:38:02.9526672Z           "evidence": [
2026-06-23T09:38:02.9526781Z             {
2026-06-23T09:38:02.9526929Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:02.9527038Z               "line": 402
2026-06-23T09:38:02.9527133Z             },
2026-06-23T09:38:02.9527235Z             {
2026-06-23T09:38:02.9527396Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:02.9527506Z               "line": 446
2026-06-23T09:38:02.9527611Z             }
2026-06-23T09:38:02.9527705Z           ]
2026-06-23T09:38:02.9527811Z         },
2026-06-23T09:38:02.9527912Z         "int": {
2026-06-23T09:38:02.9528034Z           "complete": false,
2026-06-23T09:38:02.9528148Z           "evidence": []
2026-06-23T09:38:02.9528243Z         },
2026-06-23T09:38:02.9528342Z         "unit": {
2026-06-23T09:38:02.9528455Z           "complete": true,
2026-06-23T09:38:02.9528557Z           "evidence": [
2026-06-23T09:38:02.9528652Z             {
2026-06-23T09:38:02.9528799Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:02.9528909Z               "line": 910
2026-06-23T09:38:02.9529075Z             }
2026-06-23T09:38:02.9529181Z           ]
2026-06-23T09:38:02.9529276Z         }
2026-06-23T09:38:02.9529380Z       }
2026-06-23T09:38:02.9529482Z     },
2026-06-23T09:38:02.9529581Z     {
2026-06-23T09:38:02.9529729Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-23T09:38:02.9529872Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-23T09:38:02.9529981Z       "requiredStages": [
2026-06-23T09:38:02.9530088Z         "impl",
2026-06-23T09:38:02.9530196Z         "unit"
2026-06-23T09:38:02.9530296Z       ],
2026-06-23T09:38:02.9530403Z       "stages": {
2026-06-23T09:38:02.9530516Z         "doc": {
2026-06-23T09:38:02.9530625Z           "complete": false,
2026-06-23T09:38:02.9530732Z           "evidence": []
2026-06-23T09:38:02.9530836Z         },
2026-06-23T09:38:02.9530944Z         "impl": {
2026-06-23T09:38:02.9531049Z           "complete": true,
2026-06-23T09:38:02.9531157Z           "evidence": [
2026-06-23T09:38:02.9531251Z             {
2026-06-23T09:38:02.9531380Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9531496Z               "line": 116
2026-06-23T09:38:02.9531594Z             },
2026-06-23T09:38:02.9531700Z             {
2026-06-23T09:38:02.9531947Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9532058Z               "line": 211
2026-06-23T09:38:02.9532167Z             }
2026-06-23T09:38:02.9532272Z           ]
2026-06-23T09:38:02.9532382Z         },
2026-06-23T09:38:02.9532487Z         "int": {
2026-06-23T09:38:02.9532601Z           "complete": false,
2026-06-23T09:38:02.9532796Z           "evidence": []
2026-06-23T09:38:02.9532911Z         },
2026-06-23T09:38:02.9533022Z         "unit": {
2026-06-23T09:38:02.9533125Z           "complete": true,
2026-06-23T09:38:02.9533230Z           "evidence": [
2026-06-23T09:38:02.9533332Z             {
2026-06-23T09:38:02.9533477Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9533577Z               "line": 388
2026-06-23T09:38:02.9533687Z             },
2026-06-23T09:38:02.9533794Z             {
2026-06-23T09:38:02.9533928Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9534039Z               "line": 469
2026-06-23T09:38:02.9534142Z             }
2026-06-23T09:38:02.9534247Z           ]
2026-06-23T09:38:02.9534348Z         }
2026-06-23T09:38:02.9534447Z       }
2026-06-23T09:38:02.9534548Z     },
2026-06-23T09:38:02.9534648Z     {
2026-06-23T09:38:02.9534786Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-23T09:38:02.9535908Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-23T09:38:02.9536030Z       "requiredStages": [
2026-06-23T09:38:02.9536142Z         "impl",
2026-06-23T09:38:02.9536246Z         "unit"
2026-06-23T09:38:02.9536349Z       ],
2026-06-23T09:38:02.9536454Z       "stages": {
2026-06-23T09:38:02.9536564Z         "doc": {
2026-06-23T09:38:02.9536664Z           "complete": true,
2026-06-23T09:38:02.9536768Z           "evidence": [
2026-06-23T09:38:02.9536874Z             {
2026-06-23T09:38:02.9537007Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9537112Z               "line": 206
2026-06-23T09:38:02.9537212Z             }
2026-06-23T09:38:02.9537321Z           ]
2026-06-23T09:38:02.9537427Z         },
2026-06-23T09:38:02.9537537Z         "impl": {
2026-06-23T09:38:02.9537646Z           "complete": true,
2026-06-23T09:38:02.9537756Z           "evidence": [
2026-06-23T09:38:02.9537866Z             {
2026-06-23T09:38:02.9538013Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9538124Z               "line": 691
2026-06-23T09:38:02.9538218Z             },
2026-06-23T09:38:02.9538323Z             {
2026-06-23T09:38:02.9538467Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9538571Z               "line": 791
2026-06-23T09:38:02.9538679Z             },
2026-06-23T09:38:02.9538779Z             {
2026-06-23T09:38:02.9538925Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9539107Z               "line": 1120
2026-06-23T09:38:02.9539216Z             },
2026-06-23T09:38:02.9539321Z             {
2026-06-23T09:38:02.9539465Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:02.9539578Z               "line": 184
2026-06-23T09:38:02.9539674Z             }
2026-06-23T09:38:02.9539770Z           ]
2026-06-23T09:38:02.9539864Z         },
2026-06-23T09:38:02.9539974Z         "int": {
2026-06-23T09:38:02.9540084Z           "complete": false,
2026-06-23T09:38:02.9540189Z           "evidence": []
2026-06-23T09:38:02.9540294Z         },
2026-06-23T09:38:02.9540399Z         "unit": {
2026-06-23T09:38:02.9540508Z           "complete": true,
2026-06-23T09:38:02.9540618Z           "evidence": [
2026-06-23T09:38:02.9540719Z             {
2026-06-23T09:38:02.9540857Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9540963Z               "line": 1169
2026-06-23T09:38:02.9541167Z             },
2026-06-23T09:38:02.9541267Z             {
2026-06-23T09:38:02.9541419Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-23T09:38:02.9541527Z               "line": 44
2026-06-23T09:38:02.9541628Z             },
2026-06-23T09:38:02.9541731Z             {
2026-06-23T09:38:02.9541878Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-23T09:38:02.9542107Z               "line": 52
2026-06-23T09:38:02.9542212Z             },
2026-06-23T09:38:02.9542318Z             {
2026-06-23T09:38:02.9542441Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-23T09:38:02.9542556Z               "line": 57
2026-06-23T09:38:02.9542656Z             },
2026-06-23T09:38:02.9542756Z             {
2026-06-23T09:38:02.9542914Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-23T09:38:02.9543022Z               "line": 54
2026-06-23T09:38:02.9543132Z             }
2026-06-23T09:38:02.9543238Z           ]
2026-06-23T09:38:02.9543346Z         }
2026-06-23T09:38:02.9543452Z       }
2026-06-23T09:38:02.9543553Z     },
2026-06-23T09:38:02.9543657Z     {
2026-06-23T09:38:02.9543800Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-23T09:38:02.9544042Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-23T09:38:02.9544152Z       "requiredStages": [
2026-06-23T09:38:02.9544266Z         "impl",
2026-06-23T09:38:02.9544369Z         "unit"
2026-06-23T09:38:02.9544469Z       ],
2026-06-23T09:38:02.9544574Z       "stages": {
2026-06-23T09:38:02.9544678Z         "doc": {
2026-06-23T09:38:02.9547415Z           "complete": false,
2026-06-23T09:38:02.9547562Z           "evidence": []
2026-06-23T09:38:02.9547663Z         },
2026-06-23T09:38:02.9547772Z         "impl": {
2026-06-23T09:38:02.9547877Z           "complete": true,
2026-06-23T09:38:02.9547997Z           "evidence": [
2026-06-23T09:38:02.9548092Z             {
2026-06-23T09:38:02.9548239Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9548355Z               "line": 26
2026-06-23T09:38:02.9548459Z             },
2026-06-23T09:38:02.9548564Z             {
2026-06-23T09:38:02.9548708Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9548807Z               "line": 135
2026-06-23T09:38:02.9548907Z             },
2026-06-23T09:38:02.9549088Z             {
2026-06-23T09:38:02.9549249Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T09:38:02.9549359Z               "line": 26
2026-06-23T09:38:02.9549467Z             },
2026-06-23T09:38:02.9549561Z             {
2026-06-23T09:38:02.9549720Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T09:38:02.9549828Z               "line": 237
2026-06-23T09:38:02.9549929Z             }
2026-06-23T09:38:02.9550034Z           ]
2026-06-23T09:38:02.9550134Z         },
2026-06-23T09:38:02.9550229Z         "int": {
2026-06-23T09:38:02.9550335Z           "complete": false,
2026-06-23T09:38:02.9550448Z           "evidence": []
2026-06-23T09:38:02.9550544Z         },
2026-06-23T09:38:02.9550649Z         "unit": {
2026-06-23T09:38:02.9550763Z           "complete": true,
2026-06-23T09:38:02.9550868Z           "evidence": [
2026-06-23T09:38:02.9550973Z             {
2026-06-23T09:38:02.9551116Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9551241Z               "line": 161
2026-06-23T09:38:02.9551340Z             },
2026-06-23T09:38:02.9551445Z             {
2026-06-23T09:38:02.9551589Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9551697Z               "line": 170
2026-06-23T09:38:02.9551799Z             },
2026-06-23T09:38:02.9551894Z             {
2026-06-23T09:38:02.9552036Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9552140Z               "line": 179
2026-06-23T09:38:02.9552245Z             },
2026-06-23T09:38:02.9552339Z             {
2026-06-23T09:38:02.9552467Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9552709Z               "line": 190
2026-06-23T09:38:02.9552816Z             },
2026-06-23T09:38:02.9552925Z             {
2026-06-23T09:38:02.9553067Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9553169Z               "line": 199
2026-06-23T09:38:02.9553274Z             },
2026-06-23T09:38:02.9553367Z             {
2026-06-23T09:38:02.9553607Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9553712Z               "line": 216
2026-06-23T09:38:02.9553822Z             },
2026-06-23T09:38:02.9553921Z             {
2026-06-23T09:38:02.9554065Z               "path": "crates/spt-live/src/context.rs",
2026-06-23T09:38:02.9554170Z               "line": 242
2026-06-23T09:38:02.9554269Z             },
2026-06-23T09:38:02.9554375Z             {
2026-06-23T09:38:02.9554513Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:02.9554626Z               "line": 295
2026-06-23T09:38:02.9554721Z             },
2026-06-23T09:38:02.9554821Z             {
2026-06-23T09:38:02.9554957Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:02.9555067Z               "line": 244
2026-06-23T09:38:02.9555178Z             },
2026-06-23T09:38:02.9555272Z             {
2026-06-23T09:38:02.9555435Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T09:38:02.9555535Z               "line": 265
2026-06-23T09:38:02.9555639Z             },
2026-06-23T09:38:02.9555745Z             {
2026-06-23T09:38:02.9555887Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T09:38:02.9556007Z               "line": 293
2026-06-23T09:38:02.9556107Z             },
2026-06-23T09:38:02.9556216Z             {
2026-06-23T09:38:02.9556365Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T09:38:02.9556479Z               "line": 317
2026-06-23T09:38:02.9556588Z             },
2026-06-23T09:38:02.9556685Z             {
2026-06-23T09:38:02.9556827Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-23T09:38:02.9556942Z               "line": 327
2026-06-23T09:38:02.9557042Z             },
2026-06-23T09:38:02.9557141Z             {
2026-06-23T09:38:02.9557295Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:02.9557413Z               "line": 540
2026-06-23T09:38:02.9557512Z             }
2026-06-23T09:38:02.9557617Z           ]
2026-06-23T09:38:02.9557723Z         }
2026-06-23T09:38:02.9557827Z       }
2026-06-23T09:38:02.9557923Z     },
2026-06-23T09:38:02.9558027Z     {
2026-06-23T09:38:02.9558189Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-23T09:38:02.9563085Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-23T09:38:02.9563376Z       "requiredStages": [],
2026-06-23T09:38:02.9563476Z       "stages": {
2026-06-23T09:38:02.9563681Z         "doc": {
2026-06-23T09:38:02.9563791Z           "complete": false,
2026-06-23T09:38:02.9563900Z           "evidence": []
2026-06-23T09:38:02.9564000Z         },
2026-06-23T09:38:02.9564110Z         "impl": {
2026-06-23T09:38:02.9564219Z           "complete": false,
2026-06-23T09:38:02.9564330Z           "evidence": []
2026-06-23T09:38:02.9564434Z         },
2026-06-23T09:38:02.9564534Z         "int": {
2026-06-23T09:38:02.9564645Z           "complete": false,
2026-06-23T09:38:02.9564744Z           "evidence": []
2026-06-23T09:38:02.9564849Z         },
2026-06-23T09:38:02.9564960Z         "unit": {
2026-06-23T09:38:02.9565069Z           "complete": false,
2026-06-23T09:38:02.9565176Z           "evidence": []
2026-06-23T09:38:02.9565267Z         }
2026-06-23T09:38:02.9565367Z       }
2026-06-23T09:38:02.9565456Z     },
2026-06-23T09:38:02.9565551Z     {
2026-06-23T09:38:02.9565685Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-23T09:38:02.9567249Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-23T09:38:02.9567382Z       "requiredStages": [
2026-06-23T09:38:02.9567483Z         "impl",
2026-06-23T09:38:02.9567584Z         "unit",
2026-06-23T09:38:02.9567691Z         "int"
2026-06-23T09:38:02.9567793Z       ],
2026-06-23T09:38:02.9567903Z       "stages": {
2026-06-23T09:38:02.9568006Z         "doc": {
2026-06-23T09:38:02.9568119Z           "complete": false,
2026-06-23T09:38:02.9568221Z           "evidence": []
2026-06-23T09:38:02.9568316Z         },
2026-06-23T09:38:02.9568420Z         "impl": {
2026-06-23T09:38:02.9568526Z           "complete": true,
2026-06-23T09:38:02.9568636Z           "evidence": [
2026-06-23T09:38:02.9568725Z             {
2026-06-23T09:38:02.9568884Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9569054Z               "line": 553
2026-06-23T09:38:02.9569160Z             },
2026-06-23T09:38:02.9569269Z             {
2026-06-23T09:38:02.9569412Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9569523Z               "line": 677
2026-06-23T09:38:02.9569618Z             },
2026-06-23T09:38:02.9569727Z             {
2026-06-23T09:38:02.9569893Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-23T09:38:02.9570008Z               "line": 21
2026-06-23T09:38:02.9570115Z             }
2026-06-23T09:38:02.9570208Z           ]
2026-06-23T09:38:02.9570313Z         },
2026-06-23T09:38:02.9570403Z         "int": {
2026-06-23T09:38:02.9570516Z           "complete": true,
2026-06-23T09:38:02.9570625Z           "evidence": [
2026-06-23T09:38:02.9570734Z             {
2026-06-23T09:38:02.9570911Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-23T09:38:02.9571016Z               "line": 238
2026-06-23T09:38:02.9571121Z             },
2026-06-23T09:38:02.9571216Z             {
2026-06-23T09:38:02.9571384Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-23T09:38:02.9571493Z               "line": 398
2026-06-23T09:38:02.9571592Z             },
2026-06-23T09:38:02.9571689Z             {
2026-06-23T09:38:02.9571864Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:02.9572089Z               "line": 1621
2026-06-23T09:38:02.9572188Z             },
2026-06-23T09:38:02.9572294Z             {
2026-06-23T09:38:02.9572474Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:02.9572584Z               "line": 1799
2026-06-23T09:38:02.9572691Z             }
2026-06-23T09:38:02.9572794Z           ]
2026-06-23T09:38:02.9572991Z         },
2026-06-23T09:38:02.9573090Z         "unit": {
2026-06-23T09:38:02.9573212Z           "complete": true,
2026-06-23T09:38:02.9573318Z           "evidence": [
2026-06-23T09:38:02.9573421Z             {
2026-06-23T09:38:02.9573568Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9573679Z               "line": 938
2026-06-23T09:38:02.9573783Z             }
2026-06-23T09:38:02.9573883Z           ]
2026-06-23T09:38:02.9573988Z         }
2026-06-23T09:38:02.9574093Z       }
2026-06-23T09:38:02.9574182Z     },
2026-06-23T09:38:02.9574284Z     {
2026-06-23T09:38:02.9574426Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-23T09:38:02.9574599Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-23T09:38:02.9574708Z       "requiredStages": [
2026-06-23T09:38:02.9574817Z         "impl",
2026-06-23T09:38:02.9574919Z         "unit"
2026-06-23T09:38:02.9575018Z       ],
2026-06-23T09:38:02.9575127Z       "stages": {
2026-06-23T09:38:02.9575229Z         "doc": {
2026-06-23T09:38:02.9575351Z           "complete": false,
2026-06-23T09:38:02.9575452Z           "evidence": []
2026-06-23T09:38:02.9575553Z         },
2026-06-23T09:38:02.9575661Z         "impl": {
2026-06-23T09:38:02.9575774Z           "complete": true,
2026-06-23T09:38:02.9575875Z           "evidence": [
2026-06-23T09:38:02.9575978Z             {
2026-06-23T09:38:02.9576115Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T09:38:02.9576221Z               "line": 25
2026-06-23T09:38:02.9576335Z             },
2026-06-23T09:38:02.9576440Z             {
2026-06-23T09:38:02.9576570Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:02.9576683Z               "line": 26
2026-06-23T09:38:02.9576788Z             },
2026-06-23T09:38:02.9576889Z             {
2026-06-23T09:38:02.9577026Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:02.9577133Z               "line": 159
2026-06-23T09:38:02.9577241Z             }
2026-06-23T09:38:02.9577341Z           ]
2026-06-23T09:38:02.9577442Z         },
2026-06-23T09:38:02.9577547Z         "int": {
2026-06-23T09:38:02.9577651Z           "complete": false,
2026-06-23T09:38:02.9577757Z           "evidence": []
2026-06-23T09:38:02.9577861Z         },
2026-06-23T09:38:02.9577966Z         "unit": {
2026-06-23T09:38:02.9578072Z           "complete": true,
2026-06-23T09:38:02.9578186Z           "evidence": [
2026-06-23T09:38:02.9578286Z             {
2026-06-23T09:38:02.9578421Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T09:38:02.9578524Z               "line": 188
2026-06-23T09:38:02.9578628Z             },
2026-06-23T09:38:02.9578738Z             {
2026-06-23T09:38:02.9578867Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T09:38:02.9579048Z               "line": 240
2026-06-23T09:38:02.9579138Z             },
2026-06-23T09:38:02.9579243Z             {
2026-06-23T09:38:02.9579377Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:02.9579491Z               "line": 186
2026-06-23T09:38:02.9579595Z             }
2026-06-23T09:38:02.9579692Z           ]
2026-06-23T09:38:02.9579792Z         }
2026-06-23T09:38:02.9579891Z       }
2026-06-23T09:38:02.9580002Z     },
2026-06-23T09:38:02.9580102Z     {
2026-06-23T09:38:02.9580229Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-23T09:38:02.9580421Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-23T09:38:02.9580526Z       "requiredStages": [
2026-06-23T09:38:02.9580631Z         "impl",
2026-06-23T09:38:02.9580736Z         "unit"
2026-06-23T09:38:02.9580839Z       ],
2026-06-23T09:38:02.9581049Z       "stages": {
2026-06-23T09:38:02.9581151Z         "doc": {
2026-06-23T09:38:02.9581266Z           "complete": false,
2026-06-23T09:38:02.9581376Z           "evidence": []
2026-06-23T09:38:02.9581480Z         },
2026-06-23T09:38:02.9581585Z         "impl": {
2026-06-23T09:38:02.9581700Z           "complete": true,
2026-06-23T09:38:02.9581799Z           "evidence": [
2026-06-23T09:38:02.9582019Z             {
2026-06-23T09:38:02.9582162Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9582259Z               "line": 48
2026-06-23T09:38:02.9582368Z             },
2026-06-23T09:38:02.9582467Z             {
2026-06-23T09:38:02.9582602Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9582706Z               "line": 55
2026-06-23T09:38:02.9582811Z             },
2026-06-23T09:38:02.9582912Z             {
2026-06-23T09:38:02.9583034Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9583145Z               "line": 74
2026-06-23T09:38:02.9583251Z             },
2026-06-23T09:38:02.9583354Z             {
2026-06-23T09:38:02.9583479Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9583590Z               "line": 91
2026-06-23T09:38:02.9583692Z             }
2026-06-23T09:38:02.9583791Z           ]
2026-06-23T09:38:02.9583892Z         },
2026-06-23T09:38:02.9583990Z         "int": {
2026-06-23T09:38:02.9584108Z           "complete": false,
2026-06-23T09:38:02.9584215Z           "evidence": []
2026-06-23T09:38:02.9584314Z         },
2026-06-23T09:38:02.9584423Z         "unit": {
2026-06-23T09:38:02.9584525Z           "complete": true,
2026-06-23T09:38:02.9584639Z           "evidence": [
2026-06-23T09:38:02.9584743Z             {
2026-06-23T09:38:02.9584877Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9584982Z               "line": 149
2026-06-23T09:38:02.9585092Z             },
2026-06-23T09:38:02.9585197Z             {
2026-06-23T09:38:02.9585335Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9585445Z               "line": 166
2026-06-23T09:38:02.9585549Z             },
2026-06-23T09:38:02.9585649Z             {
2026-06-23T09:38:02.9585784Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9585897Z               "line": 176
2026-06-23T09:38:02.9586003Z             },
2026-06-23T09:38:02.9586104Z             {
2026-06-23T09:38:02.9586245Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9586354Z               "line": 194
2026-06-23T09:38:02.9586459Z             },
2026-06-23T09:38:02.9586562Z             {
2026-06-23T09:38:02.9586690Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:02.9586801Z               "line": 207
2026-06-23T09:38:02.9586900Z             }
2026-06-23T09:38:02.9587010Z           ]
2026-06-23T09:38:02.9587111Z         }
2026-06-23T09:38:02.9587210Z       }
2026-06-23T09:38:02.9587300Z     },
2026-06-23T09:38:02.9587406Z     {
2026-06-23T09:38:02.9587539Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-23T09:38:02.9587754Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-23T09:38:02.9587873Z       "requiredStages": [
2026-06-23T09:38:02.9587973Z         "impl",
2026-06-23T09:38:02.9588074Z         "unit"
2026-06-23T09:38:02.9588164Z       ],
2026-06-23T09:38:02.9588273Z       "stages": {
2026-06-23T09:38:02.9588379Z         "doc": {
2026-06-23T09:38:02.9588492Z           "complete": false,
2026-06-23T09:38:02.9588608Z           "evidence": []
2026-06-23T09:38:02.9588708Z         },
2026-06-23T09:38:02.9588812Z         "impl": {
2026-06-23T09:38:02.9588918Z           "complete": true,
2026-06-23T09:38:02.9589107Z           "evidence": [
2026-06-23T09:38:02.9589211Z             {
2026-06-23T09:38:02.9589365Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9589465Z               "line": 677
2026-06-23T09:38:02.9589569Z             },
2026-06-23T09:38:02.9589670Z             {
2026-06-23T09:38:02.9589913Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:02.9590028Z               "line": 26
2026-06-23T09:38:02.9590132Z             }
2026-06-23T09:38:02.9590237Z           ]
2026-06-23T09:38:02.9590333Z         },
2026-06-23T09:38:02.9590437Z         "int": {
2026-06-23T09:38:02.9590547Z           "complete": false,
2026-06-23T09:38:02.9590752Z           "evidence": []
2026-06-23T09:38:02.9590862Z         },
2026-06-23T09:38:02.9590967Z         "unit": {
2026-06-23T09:38:02.9591076Z           "complete": true,
2026-06-23T09:38:02.9591181Z           "evidence": [
2026-06-23T09:38:02.9591287Z             {
2026-06-23T09:38:02.9591428Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:02.9591528Z               "line": 150
2026-06-23T09:38:02.9591632Z             },
2026-06-23T09:38:02.9591740Z             {
2026-06-23T09:38:02.9591879Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:02.9591985Z               "line": 208
2026-06-23T09:38:02.9592088Z             }
2026-06-23T09:38:02.9592188Z           ]
2026-06-23T09:38:02.9592284Z         }
2026-06-23T09:38:02.9592388Z       }
2026-06-23T09:38:02.9592499Z     },
2026-06-23T09:38:02.9592603Z     {
2026-06-23T09:38:02.9592756Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-23T09:38:02.9601809Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-23T09:38:02.9602239Z       "requiredStages": [
2026-06-23T09:38:02.9602353Z         "impl",
2026-06-23T09:38:02.9602443Z         "unit",
2026-06-23T09:38:02.9602553Z         "int"
2026-06-23T09:38:02.9602653Z       ],
2026-06-23T09:38:02.9602754Z       "stages": {
2026-06-23T09:38:02.9602859Z         "doc": {
2026-06-23T09:38:02.9602967Z           "complete": false,
2026-06-23T09:38:02.9603078Z           "evidence": []
2026-06-23T09:38:02.9603183Z         },
2026-06-23T09:38:02.9603292Z         "impl": {
2026-06-23T09:38:02.9603403Z           "complete": true,
2026-06-23T09:38:02.9603512Z           "evidence": [
2026-06-23T09:38:02.9603626Z             {
2026-06-23T09:38:02.9603770Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9603884Z               "line": 99
2026-06-23T09:38:02.9603984Z             },
2026-06-23T09:38:02.9604089Z             {
2026-06-23T09:38:02.9604236Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9604338Z               "line": 201
2026-06-23T09:38:02.9604446Z             }
2026-06-23T09:38:02.9604556Z           ]
2026-06-23T09:38:02.9604662Z         },
2026-06-23T09:38:02.9604757Z         "int": {
2026-06-23T09:38:02.9604874Z           "complete": true,
2026-06-23T09:38:02.9604979Z           "evidence": [
2026-06-23T09:38:02.9605078Z             {
2026-06-23T09:38:02.9605258Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:02.9605364Z               "line": 855
2026-06-23T09:38:02.9605472Z             }
2026-06-23T09:38:02.9605567Z           ]
2026-06-23T09:38:02.9605674Z         },
2026-06-23T09:38:02.9605778Z         "unit": {
2026-06-23T09:38:02.9605892Z           "complete": true,
2026-06-23T09:38:02.9606003Z           "evidence": [
2026-06-23T09:38:02.9606102Z             {
2026-06-23T09:38:02.9606255Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9606364Z               "line": 517
2026-06-23T09:38:02.9606474Z             },
2026-06-23T09:38:02.9606575Z             {
2026-06-23T09:38:02.9606721Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9606822Z               "line": 576
2026-06-23T09:38:02.9606919Z             }
2026-06-23T09:38:02.9607026Z           ]
2026-06-23T09:38:02.9607123Z         }
2026-06-23T09:38:02.9607219Z       }
2026-06-23T09:38:02.9607314Z     },
2026-06-23T09:38:02.9607422Z     {
2026-06-23T09:38:02.9607565Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-23T09:38:02.9608898Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-23T09:38:02.9609088Z       "requiredStages": [
2026-06-23T09:38:02.9609194Z         "doc",
2026-06-23T09:38:02.9609298Z         "impl",
2026-06-23T09:38:02.9609403Z         "unit"
2026-06-23T09:38:02.9609509Z       ],
2026-06-23T09:38:02.9609618Z       "stages": {
2026-06-23T09:38:02.9609713Z         "doc": {
2026-06-23T09:38:02.9609824Z           "complete": true,
2026-06-23T09:38:02.9609932Z           "evidence": [
2026-06-23T09:38:02.9610033Z             {
2026-06-23T09:38:02.9610171Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9610270Z               "line": 214
2026-06-23T09:38:02.9610380Z             }
2026-06-23T09:38:02.9610476Z           ]
2026-06-23T09:38:02.9610580Z         },
2026-06-23T09:38:02.9610795Z         "impl": {
2026-06-23T09:38:02.9610899Z           "complete": true,
2026-06-23T09:38:02.9611019Z           "evidence": [
2026-06-23T09:38:02.9611124Z             {
2026-06-23T09:38:02.9611271Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9611372Z               "line": 56
2026-06-23T09:38:02.9611576Z             },
2026-06-23T09:38:02.9611677Z             {
2026-06-23T09:38:02.9611810Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:02.9611920Z               "line": 580
2026-06-23T09:38:02.9612021Z             },
2026-06-23T09:38:02.9612130Z             {
2026-06-23T09:38:02.9612278Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9612393Z               "line": 36
2026-06-23T09:38:02.9612497Z             },
2026-06-23T09:38:02.9612605Z             {
2026-06-23T09:38:02.9612757Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9612865Z               "line": 59
2026-06-23T09:38:02.9612975Z             },
2026-06-23T09:38:02.9613081Z             {
2026-06-23T09:38:02.9613227Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9613338Z               "line": 83
2026-06-23T09:38:02.9613442Z             },
2026-06-23T09:38:02.9613542Z             {
2026-06-23T09:38:02.9613682Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9613795Z               "line": 140
2026-06-23T09:38:02.9613895Z             },
2026-06-23T09:38:02.9614001Z             {
2026-06-23T09:38:02.9614148Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9614254Z               "line": 159
2026-06-23T09:38:02.9614363Z             },
2026-06-23T09:38:02.9614458Z             {
2026-06-23T09:38:02.9614597Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9614706Z               "line": 384
2026-06-23T09:38:02.9614815Z             },
2026-06-23T09:38:02.9614917Z             {
2026-06-23T09:38:02.9615063Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9615164Z               "line": 535
2026-06-23T09:38:02.9615265Z             },
2026-06-23T09:38:02.9615373Z             {
2026-06-23T09:38:02.9615511Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9615620Z               "line": 581
2026-06-23T09:38:02.9615732Z             },
2026-06-23T09:38:02.9615833Z             {
2026-06-23T09:38:02.9615972Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9616066Z               "line": 300
2026-06-23T09:38:02.9616172Z             },
2026-06-23T09:38:02.9616271Z             {
2026-06-23T09:38:02.9616409Z               "path": "crates/spt/src/main.rs",
2026-06-23T09:38:02.9616520Z               "line": 42
2026-06-23T09:38:02.9616615Z             }
2026-06-23T09:38:02.9616709Z           ]
2026-06-23T09:38:02.9616806Z         },
2026-06-23T09:38:02.9616906Z         "int": {
2026-06-23T09:38:02.9617015Z           "complete": false,
2026-06-23T09:38:02.9617135Z           "evidence": []
2026-06-23T09:38:02.9617244Z         },
2026-06-23T09:38:02.9617348Z         "unit": {
2026-06-23T09:38:02.9617460Z           "complete": true,
2026-06-23T09:38:02.9617568Z           "evidence": [
2026-06-23T09:38:02.9617678Z             {
2026-06-23T09:38:02.9617827Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9617944Z               "line": 813
2026-06-23T09:38:02.9618048Z             },
2026-06-23T09:38:02.9618144Z             {
2026-06-23T09:38:02.9618290Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9618395Z               "line": 854
2026-06-23T09:38:02.9618500Z             },
2026-06-23T09:38:02.9618599Z             {
2026-06-23T09:38:02.9618733Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:02.9618848Z               "line": 928
2026-06-23T09:38:02.9619024Z             }
2026-06-23T09:38:02.9619129Z           ]
2026-06-23T09:38:02.9619344Z         }
2026-06-23T09:38:02.9619449Z       }
2026-06-23T09:38:02.9619548Z     },
2026-06-23T09:38:02.9619658Z     {
2026-06-23T09:38:02.9619806Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-23T09:38:02.9624698Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-23T09:38:02.9624975Z       "requiredStages": [
2026-06-23T09:38:02.9625080Z         "impl",
2026-06-23T09:38:02.9625191Z         "unit",
2026-06-23T09:38:02.9625290Z         "int"
2026-06-23T09:38:02.9625390Z       ],
2026-06-23T09:38:02.9625486Z       "stages": {
2026-06-23T09:38:02.9625590Z         "doc": {
2026-06-23T09:38:02.9625715Z           "complete": false,
2026-06-23T09:38:02.9625820Z           "evidence": []
2026-06-23T09:38:02.9625933Z         },
2026-06-23T09:38:02.9626037Z         "impl": {
2026-06-23T09:38:02.9626161Z           "complete": true,
2026-06-23T09:38:02.9626264Z           "evidence": [
2026-06-23T09:38:02.9626373Z             {
2026-06-23T09:38:02.9626522Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:02.9626630Z               "line": 204
2026-06-23T09:38:02.9626732Z             }
2026-06-23T09:38:02.9626837Z           ]
2026-06-23T09:38:02.9626941Z         },
2026-06-23T09:38:02.9627047Z         "int": {
2026-06-23T09:38:02.9627161Z           "complete": true,
2026-06-23T09:38:02.9627265Z           "evidence": [
2026-06-23T09:38:02.9627376Z             {
2026-06-23T09:38:02.9627533Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-23T09:38:02.9627642Z               "line": 296
2026-06-23T09:38:02.9627748Z             }
2026-06-23T09:38:02.9627851Z           ]
2026-06-23T09:38:02.9627952Z         },
2026-06-23T09:38:02.9628063Z         "unit": {
2026-06-23T09:38:02.9628175Z           "complete": true,
2026-06-23T09:38:02.9628286Z           "evidence": [
2026-06-23T09:38:02.9628382Z             {
2026-06-23T09:38:02.9628537Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:02.9628652Z               "line": 469
2026-06-23T09:38:02.9628761Z             }
2026-06-23T09:38:02.9628868Z           ]
2026-06-23T09:38:02.9629046Z         }
2026-06-23T09:38:02.9629146Z       }
2026-06-23T09:38:02.9629240Z     },
2026-06-23T09:38:02.9629347Z     {
2026-06-23T09:38:02.9629470Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-23T09:38:02.9632832Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-23T09:38:02.9633180Z       "requiredStages": [
2026-06-23T09:38:02.9633288Z         "impl",
2026-06-23T09:38:02.9633398Z         "unit",
2026-06-23T09:38:02.9633504Z         "int"
2026-06-23T09:38:02.9633597Z       ],
2026-06-23T09:38:02.9633711Z       "stages": {
2026-06-23T09:38:02.9633821Z         "doc": {
2026-06-23T09:38:02.9633928Z           "complete": false,
2026-06-23T09:38:02.9634042Z           "evidence": []
2026-06-23T09:38:02.9634139Z         },
2026-06-23T09:38:02.9634248Z         "impl": {
2026-06-23T09:38:02.9634357Z           "complete": true,
2026-06-23T09:38:02.9634458Z           "evidence": [
2026-06-23T09:38:02.9634562Z             {
2026-06-23T09:38:02.9634730Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:02.9634835Z               "line": 123
2026-06-23T09:38:02.9634939Z             },
2026-06-23T09:38:02.9635045Z             {
2026-06-23T09:38:02.9635183Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T09:38:02.9635297Z               "line": 134
2026-06-23T09:38:02.9635408Z             }
2026-06-23T09:38:02.9635502Z           ]
2026-06-23T09:38:02.9635616Z         },
2026-06-23T09:38:02.9635713Z         "int": {
2026-06-23T09:38:02.9635826Z           "complete": true,
2026-06-23T09:38:02.9635936Z           "evidence": [
2026-06-23T09:38:02.9636047Z             {
2026-06-23T09:38:02.9636198Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:02.9636304Z               "line": 314
2026-06-23T09:38:02.9636409Z             },
2026-06-23T09:38:02.9636507Z             {
2026-06-23T09:38:02.9636655Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:02.9636758Z               "line": 531
2026-06-23T09:38:02.9636871Z             }
2026-06-23T09:38:02.9636977Z           ]
2026-06-23T09:38:02.9637077Z         },
2026-06-23T09:38:02.9637186Z         "unit": {
2026-06-23T09:38:02.9637302Z           "complete": true,
2026-06-23T09:38:02.9637411Z           "evidence": [
2026-06-23T09:38:02.9637515Z             {
2026-06-23T09:38:02.9637664Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:02.9637778Z               "line": 256
2026-06-23T09:38:02.9637873Z             }
2026-06-23T09:38:02.9637974Z           ]
2026-06-23T09:38:02.9638073Z         }
2026-06-23T09:38:02.9638188Z       }
2026-06-23T09:38:02.9638289Z     },
2026-06-23T09:38:02.9638398Z     {
2026-06-23T09:38:02.9638541Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-23T09:38:02.9640373Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-23T09:38:02.9640640Z       "requiredStages": [
2026-06-23T09:38:02.9640750Z         "impl",
2026-06-23T09:38:02.9640851Z         "unit"
2026-06-23T09:38:02.9640960Z       ],
2026-06-23T09:38:02.9641156Z       "stages": {
2026-06-23T09:38:02.9641265Z         "doc": {
2026-06-23T09:38:02.9641374Z           "complete": false,
2026-06-23T09:38:02.9641490Z           "evidence": []
2026-06-23T09:38:02.9641589Z         },
2026-06-23T09:38:02.9641689Z         "impl": {
2026-06-23T09:38:02.9641795Z           "complete": true,
2026-06-23T09:38:02.9641894Z           "evidence": [
2026-06-23T09:38:02.9642003Z             {
2026-06-23T09:38:02.9642147Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9642251Z               "line": 31
2026-06-23T09:38:02.9642351Z             }
2026-06-23T09:38:02.9642442Z           ]
2026-06-23T09:38:02.9642552Z         },
2026-06-23T09:38:02.9642656Z         "int": {
2026-06-23T09:38:02.9642762Z           "complete": false,
2026-06-23T09:38:02.9642872Z           "evidence": []
2026-06-23T09:38:02.9642975Z         },
2026-06-23T09:38:02.9643072Z         "unit": {
2026-06-23T09:38:02.9643171Z           "complete": true,
2026-06-23T09:38:02.9643275Z           "evidence": [
2026-06-23T09:38:02.9643382Z             {
2026-06-23T09:38:02.9643524Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9643629Z               "line": 181
2026-06-23T09:38:02.9643725Z             }
2026-06-23T09:38:02.9643833Z           ]
2026-06-23T09:38:02.9643934Z         }
2026-06-23T09:38:02.9644040Z       }
2026-06-23T09:38:02.9644143Z     },
2026-06-23T09:38:02.9644252Z     {
2026-06-23T09:38:02.9644386Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-23T09:38:02.9644579Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-23T09:38:02.9644699Z       "requiredStages": [
2026-06-23T09:38:02.9644808Z         "impl",
2026-06-23T09:38:02.9644917Z         "unit"
2026-06-23T09:38:02.9645009Z       ],
2026-06-23T09:38:02.9645118Z       "stages": {
2026-06-23T09:38:02.9645213Z         "doc": {
2026-06-23T09:38:02.9645319Z           "complete": false,
2026-06-23T09:38:02.9645429Z           "evidence": []
2026-06-23T09:38:02.9645533Z         },
2026-06-23T09:38:02.9645644Z         "impl": {
2026-06-23T09:38:02.9645753Z           "complete": true,
2026-06-23T09:38:02.9645866Z           "evidence": [
2026-06-23T09:38:02.9645963Z             {
2026-06-23T09:38:02.9646109Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9646234Z               "line": 49
2026-06-23T09:38:02.9646339Z             },
2026-06-23T09:38:02.9646448Z             {
2026-06-23T09:38:02.9646588Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9646700Z               "line": 81
2026-06-23T09:38:02.9646806Z             }
2026-06-23T09:38:02.9646917Z           ]
2026-06-23T09:38:02.9647020Z         },
2026-06-23T09:38:02.9647128Z         "int": {
2026-06-23T09:38:02.9647244Z           "complete": false,
2026-06-23T09:38:02.9647356Z           "evidence": []
2026-06-23T09:38:02.9647460Z         },
2026-06-23T09:38:02.9647561Z         "unit": {
2026-06-23T09:38:02.9647675Z           "complete": true,
2026-06-23T09:38:02.9647794Z           "evidence": [
2026-06-23T09:38:02.9647895Z             {
2026-06-23T09:38:02.9648037Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9648143Z               "line": 156
2026-06-23T09:38:02.9648252Z             },
2026-06-23T09:38:02.9648357Z             {
2026-06-23T09:38:02.9648496Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9651215Z               "line": 173
2026-06-23T09:38:02.9651343Z             },
2026-06-23T09:38:02.9651453Z             {
2026-06-23T09:38:02.9651615Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9651868Z               "line": 196
2026-06-23T09:38:02.9651969Z             }
2026-06-23T09:38:02.9652069Z           ]
2026-06-23T09:38:02.9652172Z         }
2026-06-23T09:38:02.9652274Z       }
2026-06-23T09:38:02.9652374Z     },
2026-06-23T09:38:02.9652473Z     {
2026-06-23T09:38:02.9652630Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-23T09:38:02.9652835Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-23T09:38:02.9653055Z       "requiredStages": [
2026-06-23T09:38:02.9653164Z         "impl",
2026-06-23T09:38:02.9653264Z         "unit"
2026-06-23T09:38:02.9653365Z       ],
2026-06-23T09:38:02.9653469Z       "stages": {
2026-06-23T09:38:02.9653579Z         "doc": {
2026-06-23T09:38:02.9653694Z           "complete": false,
2026-06-23T09:38:02.9653789Z           "evidence": []
2026-06-23T09:38:02.9653889Z         },
2026-06-23T09:38:02.9653990Z         "impl": {
2026-06-23T09:38:02.9654104Z           "complete": true,
2026-06-23T09:38:02.9654203Z           "evidence": [
2026-06-23T09:38:02.9654314Z             {
2026-06-23T09:38:02.9654461Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9654567Z               "line": 120
2026-06-23T09:38:02.9654676Z             }
2026-06-23T09:38:02.9654770Z           ]
2026-06-23T09:38:02.9654875Z         },
2026-06-23T09:38:02.9654979Z         "int": {
2026-06-23T09:38:02.9655096Z           "complete": false,
2026-06-23T09:38:02.9655202Z           "evidence": []
2026-06-23T09:38:02.9655302Z         },
2026-06-23T09:38:02.9655415Z         "unit": {
2026-06-23T09:38:02.9655530Z           "complete": true,
2026-06-23T09:38:02.9655635Z           "evidence": [
2026-06-23T09:38:02.9655740Z             {
2026-06-23T09:38:02.9655889Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9655998Z               "line": 212
2026-06-23T09:38:02.9656102Z             },
2026-06-23T09:38:02.9656204Z             {
2026-06-23T09:38:02.9656341Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9656460Z               "line": 221
2026-06-23T09:38:02.9656566Z             },
2026-06-23T09:38:02.9656675Z             {
2026-06-23T09:38:02.9656814Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9656922Z               "line": 229
2026-06-23T09:38:02.9657027Z             },
2026-06-23T09:38:02.9657129Z             {
2026-06-23T09:38:02.9657270Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9657376Z               "line": 239
2026-06-23T09:38:02.9657487Z             },
2026-06-23T09:38:02.9657580Z             {
2026-06-23T09:38:02.9657727Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-23T09:38:02.9657832Z               "line": 249
2026-06-23T09:38:02.9657940Z             }
2026-06-23T09:38:02.9658044Z           ]
2026-06-23T09:38:02.9658145Z         }
2026-06-23T09:38:02.9658254Z       }
2026-06-23T09:38:02.9658349Z     },
2026-06-23T09:38:02.9658455Z     {
2026-06-23T09:38:02.9658592Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-23T09:38:02.9658780Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-23T09:38:02.9658898Z       "requiredStages": [
2026-06-23T09:38:02.9659076Z         "impl",
2026-06-23T09:38:02.9659189Z         "unit"
2026-06-23T09:38:02.9659289Z       ],
2026-06-23T09:38:02.9659395Z       "stages": {
2026-06-23T09:38:02.9659504Z         "doc": {
2026-06-23T09:38:02.9659618Z           "complete": false,
2026-06-23T09:38:02.9659729Z           "evidence": []
2026-06-23T09:38:02.9659823Z         },
2026-06-23T09:38:02.9659933Z         "impl": {
2026-06-23T09:38:02.9660030Z           "complete": true,
2026-06-23T09:38:02.9660142Z           "evidence": [
2026-06-23T09:38:02.9660251Z             {
2026-06-23T09:38:02.9660380Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:02.9660492Z               "line": 14
2026-06-23T09:38:02.9660596Z             },
2026-06-23T09:38:02.9660697Z             {
2026-06-23T09:38:02.9660826Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:02.9661060Z               "line": 63
2026-06-23T09:38:02.9661169Z             }
2026-06-23T09:38:02.9661260Z           ]
2026-06-23T09:38:02.9661360Z         },
2026-06-23T09:38:02.9661460Z         "int": {
2026-06-23T09:38:02.9661575Z           "complete": false,
2026-06-23T09:38:02.9661675Z           "evidence": []
2026-06-23T09:38:02.9661860Z         },
2026-06-23T09:38:02.9661971Z         "unit": {
2026-06-23T09:38:02.9662080Z           "complete": true,
2026-06-23T09:38:02.9662189Z           "evidence": [
2026-06-23T09:38:02.9662286Z             {
2026-06-23T09:38:02.9662413Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:02.9662519Z               "line": 164
2026-06-23T09:38:02.9662629Z             },
2026-06-23T09:38:02.9662738Z             {
2026-06-23T09:38:02.9662863Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:02.9662972Z               "line": 198
2026-06-23T09:38:02.9663071Z             },
2026-06-23T09:38:02.9663171Z             {
2026-06-23T09:38:02.9663300Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:02.9663409Z               "line": 220
2026-06-23T09:38:02.9663509Z             }
2026-06-23T09:38:02.9663611Z           ]
2026-06-23T09:38:02.9663710Z         }
2026-06-23T09:38:02.9663800Z       }
2026-06-23T09:38:02.9663901Z     },
2026-06-23T09:38:02.9664001Z     {
2026-06-23T09:38:02.9664129Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-23T09:38:02.9665516Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-23T09:38:02.9665642Z       "requiredStages": [],
2026-06-23T09:38:02.9665762Z       "stages": {
2026-06-23T09:38:02.9665867Z         "doc": {
2026-06-23T09:38:02.9665985Z           "complete": true,
2026-06-23T09:38:02.9666096Z           "evidence": [
2026-06-23T09:38:02.9666195Z             {
2026-06-23T09:38:02.9666333Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9666444Z               "line": 165
2026-06-23T09:38:02.9666554Z             }
2026-06-23T09:38:02.9666648Z           ]
2026-06-23T09:38:02.9666749Z         },
2026-06-23T09:38:02.9666853Z         "impl": {
2026-06-23T09:38:02.9666958Z           "complete": false,
2026-06-23T09:38:02.9667073Z           "evidence": []
2026-06-23T09:38:02.9667168Z         },
2026-06-23T09:38:02.9667277Z         "int": {
2026-06-23T09:38:02.9667379Z           "complete": false,
2026-06-23T09:38:02.9667497Z           "evidence": []
2026-06-23T09:38:02.9667606Z         },
2026-06-23T09:38:02.9667698Z         "unit": {
2026-06-23T09:38:02.9667812Z           "complete": false,
2026-06-23T09:38:02.9667917Z           "evidence": []
2026-06-23T09:38:02.9668028Z         }
2026-06-23T09:38:02.9668127Z       }
2026-06-23T09:38:02.9668235Z     },
2026-06-23T09:38:02.9668335Z     {
2026-06-23T09:38:02.9668481Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-23T09:38:02.9668724Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-23T09:38:02.9668838Z       "requiredStages": [
2026-06-23T09:38:02.9669172Z         "impl",
2026-06-23T09:38:02.9669278Z         "unit"
2026-06-23T09:38:02.9669377Z       ],
2026-06-23T09:38:02.9669491Z       "stages": {
2026-06-23T09:38:02.9669592Z         "doc": {
2026-06-23T09:38:02.9669706Z           "complete": false,
2026-06-23T09:38:02.9669811Z           "evidence": []
2026-06-23T09:38:02.9669917Z         },
2026-06-23T09:38:02.9670021Z         "impl": {
2026-06-23T09:38:02.9670135Z           "complete": true,
2026-06-23T09:38:02.9670246Z           "evidence": [
2026-06-23T09:38:02.9670345Z             {
2026-06-23T09:38:02.9670498Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9670712Z               "line": 76
2026-06-23T09:38:02.9670815Z             },
2026-06-23T09:38:02.9670912Z             {
2026-06-23T09:38:02.9671047Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9671161Z               "line": 167
2026-06-23T09:38:02.9671262Z             },
2026-06-23T09:38:02.9671457Z             {
2026-06-23T09:38:02.9671592Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9671696Z               "line": 233
2026-06-23T09:38:02.9671800Z             },
2026-06-23T09:38:02.9671902Z             {
2026-06-23T09:38:02.9672030Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9672140Z               "line": 272
2026-06-23T09:38:02.9672244Z             }
2026-06-23T09:38:02.9672345Z           ]
2026-06-23T09:38:02.9672444Z         },
2026-06-23T09:38:02.9672541Z         "int": {
2026-06-23T09:38:02.9672654Z           "complete": false,
2026-06-23T09:38:02.9672759Z           "evidence": []
2026-06-23T09:38:02.9672860Z         },
2026-06-23T09:38:02.9672969Z         "unit": {
2026-06-23T09:38:02.9673079Z           "complete": true,
2026-06-23T09:38:02.9673185Z           "evidence": [
2026-06-23T09:38:02.9673293Z             {
2026-06-23T09:38:02.9673423Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9673528Z               "line": 321
2026-06-23T09:38:02.9673631Z             },
2026-06-23T09:38:02.9673726Z             {
2026-06-23T09:38:02.9673861Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9673969Z               "line": 329
2026-06-23T09:38:02.9674069Z             },
2026-06-23T09:38:02.9674166Z             {
2026-06-23T09:38:02.9674303Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9674404Z               "line": 356
2026-06-23T09:38:02.9674509Z             },
2026-06-23T09:38:02.9674608Z             {
2026-06-23T09:38:02.9674748Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9674861Z               "line": 395
2026-06-23T09:38:02.9674961Z             },
2026-06-23T09:38:02.9675067Z             {
2026-06-23T09:38:02.9675199Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9675309Z               "line": 406
2026-06-23T09:38:02.9675410Z             },
2026-06-23T09:38:02.9675505Z             {
2026-06-23T09:38:02.9675653Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9675763Z               "line": 418
2026-06-23T09:38:02.9675866Z             },
2026-06-23T09:38:02.9675966Z             {
2026-06-23T09:38:02.9676104Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-23T09:38:02.9676207Z               "line": 442
2026-06-23T09:38:02.9676312Z             }
2026-06-23T09:38:02.9676418Z           ]
2026-06-23T09:38:02.9676512Z         }
2026-06-23T09:38:02.9676612Z       }
2026-06-23T09:38:02.9676714Z     },
2026-06-23T09:38:02.9676818Z     {
2026-06-23T09:38:02.9676951Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-23T09:38:02.9677132Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-23T09:38:02.9677232Z       "requiredStages": [
2026-06-23T09:38:02.9677338Z         "impl",
2026-06-23T09:38:02.9677447Z         "int"
2026-06-23T09:38:02.9677542Z       ],
2026-06-23T09:38:02.9677653Z       "stages": {
2026-06-23T09:38:02.9677757Z         "doc": {
2026-06-23T09:38:02.9677881Z           "complete": false,
2026-06-23T09:38:02.9677977Z           "evidence": []
2026-06-23T09:38:02.9678080Z         },
2026-06-23T09:38:02.9678186Z         "impl": {
2026-06-23T09:38:02.9678292Z           "complete": true,
2026-06-23T09:38:02.9678400Z           "evidence": [
2026-06-23T09:38:02.9678491Z             {
2026-06-23T09:38:02.9678640Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9678738Z               "line": 22
2026-06-23T09:38:02.9678842Z             }
2026-06-23T09:38:02.9679032Z           ]
2026-06-23T09:38:02.9679117Z         },
2026-06-23T09:38:02.9679333Z         "int": {
2026-06-23T09:38:02.9679436Z           "complete": true,
2026-06-23T09:38:02.9679552Z           "evidence": [
2026-06-23T09:38:02.9679657Z             {
2026-06-23T09:38:02.9679808Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-23T09:38:02.9679915Z               "line": 18
2026-06-23T09:38:02.9680014Z             }
2026-06-23T09:38:02.9680215Z           ]
2026-06-23T09:38:02.9680314Z         },
2026-06-23T09:38:02.9680419Z         "unit": {
2026-06-23T09:38:02.9680544Z           "complete": false,
2026-06-23T09:38:02.9680642Z           "evidence": []
2026-06-23T09:38:02.9680748Z         }
2026-06-23T09:38:02.9680849Z       }
2026-06-23T09:38:02.9680952Z     },
2026-06-23T09:38:02.9681048Z     {
2026-06-23T09:38:02.9681188Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-23T09:38:02.9681404Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-23T09:38:02.9681515Z       "requiredStages": [
2026-06-23T09:38:02.9681622Z         "impl",
2026-06-23T09:38:02.9681721Z         "unit"
2026-06-23T09:38:02.9681823Z       ],
2026-06-23T09:38:02.9681927Z       "stages": {
2026-06-23T09:38:02.9682036Z         "doc": {
2026-06-23T09:38:02.9682152Z           "complete": false,
2026-06-23T09:38:02.9682251Z           "evidence": []
2026-06-23T09:38:02.9682356Z         },
2026-06-23T09:38:02.9682453Z         "impl": {
2026-06-23T09:38:02.9682562Z           "complete": true,
2026-06-23T09:38:02.9682666Z           "evidence": [
2026-06-23T09:38:02.9682772Z             {
2026-06-23T09:38:02.9682928Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9683029Z               "line": 676
2026-06-23T09:38:02.9683134Z             },
2026-06-23T09:38:02.9683234Z             {
2026-06-23T09:38:02.9683383Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:02.9683476Z               "line": 27
2026-06-23T09:38:02.9683581Z             }
2026-06-23T09:38:02.9683688Z           ]
2026-06-23T09:38:02.9683787Z         },
2026-06-23T09:38:02.9683877Z         "int": {
2026-06-23T09:38:02.9683988Z           "complete": false,
2026-06-23T09:38:02.9684106Z           "evidence": []
2026-06-23T09:38:02.9684206Z         },
2026-06-23T09:38:02.9684305Z         "unit": {
2026-06-23T09:38:02.9684421Z           "complete": true,
2026-06-23T09:38:02.9684525Z           "evidence": [
2026-06-23T09:38:02.9684630Z             {
2026-06-23T09:38:02.9684778Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:02.9684896Z               "line": 1201
2026-06-23T09:38:02.9684993Z             },
2026-06-23T09:38:02.9685097Z             {
2026-06-23T09:38:02.9685240Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:02.9685341Z               "line": 181
2026-06-23T09:38:02.9685445Z             }
2026-06-23T09:38:02.9685545Z           ]
2026-06-23T09:38:02.9685646Z         }
2026-06-23T09:38:02.9685746Z       }
2026-06-23T09:38:02.9685841Z     },
2026-06-23T09:38:02.9685947Z     {
2026-06-23T09:38:02.9686089Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-23T09:38:02.9686281Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-23T09:38:02.9686394Z       "requiredStages": [
2026-06-23T09:38:02.9686488Z         "impl",
2026-06-23T09:38:02.9686574Z         "unit"
2026-06-23T09:38:02.9686683Z       ],
2026-06-23T09:38:02.9686796Z       "stages": {
2026-06-23T09:38:02.9686896Z         "doc": {
2026-06-23T09:38:02.9687002Z           "complete": false,
2026-06-23T09:38:02.9687115Z           "evidence": []
2026-06-23T09:38:02.9687211Z         },
2026-06-23T09:38:02.9687316Z         "impl": {
2026-06-23T09:38:02.9687430Z           "complete": true,
2026-06-23T09:38:02.9687541Z           "evidence": [
2026-06-23T09:38:02.9687640Z             {
2026-06-23T09:38:02.9687787Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9687893Z               "line": 73
2026-06-23T09:38:02.9687998Z             },
2026-06-23T09:38:02.9688097Z             {
2026-06-23T09:38:02.9688317Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9688426Z               "line": 972
2026-06-23T09:38:02.9688523Z             },
2026-06-23T09:38:02.9688622Z             {
2026-06-23T09:38:02.9688761Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T09:38:02.9688866Z               "line": 20
2026-06-23T09:38:02.9689134Z             },
2026-06-23T09:38:02.9689238Z             {
2026-06-23T09:38:02.9689379Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T09:38:02.9689479Z               "line": 100
2026-06-23T09:38:02.9689578Z             },
2026-06-23T09:38:02.9689677Z             {
2026-06-23T09:38:02.9689811Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9689912Z               "line": 655
2026-06-23T09:38:02.9690020Z             },
2026-06-23T09:38:02.9690112Z             {
2026-06-23T09:38:02.9690259Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T09:38:02.9690373Z               "line": 68
2026-06-23T09:38:02.9690470Z             },
2026-06-23T09:38:02.9690579Z             {
2026-06-23T09:38:02.9690722Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T09:38:02.9690832Z               "line": 80
2026-06-23T09:38:02.9690940Z             }
2026-06-23T09:38:02.9691027Z           ]
2026-06-23T09:38:02.9691128Z         },
2026-06-23T09:38:02.9691237Z         "int": {
2026-06-23T09:38:02.9691352Z           "complete": true,
2026-06-23T09:38:02.9691457Z           "evidence": [
2026-06-23T09:38:02.9691561Z             {
2026-06-23T09:38:02.9691705Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-23T09:38:02.9691814Z               "line": 44
2026-06-23T09:38:02.9691918Z             }
2026-06-23T09:38:02.9692013Z           ]
2026-06-23T09:38:02.9692112Z         },
2026-06-23T09:38:02.9692215Z         "unit": {
2026-06-23T09:38:02.9692325Z           "complete": true,
2026-06-23T09:38:02.9692441Z           "evidence": [
2026-06-23T09:38:02.9692544Z             {
2026-06-23T09:38:02.9692679Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9692774Z               "line": 1181
2026-06-23T09:38:02.9692883Z             },
2026-06-23T09:38:02.9692984Z             {
2026-06-23T09:38:02.9693136Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:02.9693245Z               "line": 1197
2026-06-23T09:38:02.9693351Z             },
2026-06-23T09:38:02.9693456Z             {
2026-06-23T09:38:02.9693594Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9693703Z               "line": 2648
2026-06-23T09:38:02.9693798Z             },
2026-06-23T09:38:02.9693899Z             {
2026-06-23T09:38:02.9694041Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T09:38:02.9694151Z               "line": 152
2026-06-23T09:38:02.9694262Z             },
2026-06-23T09:38:02.9694361Z             {
2026-06-23T09:38:02.9694509Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T09:38:02.9694625Z               "line": 175
2026-06-23T09:38:02.9694727Z             },
2026-06-23T09:38:02.9694831Z             {
2026-06-23T09:38:02.9694971Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T09:38:02.9695089Z               "line": 186
2026-06-23T09:38:02.9695185Z             },
2026-06-23T09:38:02.9695295Z             {
2026-06-23T09:38:02.9695442Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T09:38:02.9695553Z               "line": 202
2026-06-23T09:38:02.9695663Z             },
2026-06-23T09:38:02.9695762Z             {
2026-06-23T09:38:02.9695897Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-23T09:38:02.9696005Z               "line": 216
2026-06-23T09:38:02.9696110Z             },
2026-06-23T09:38:02.9696211Z             {
2026-06-23T09:38:02.9696349Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-23T09:38:02.9696454Z               "line": 137
2026-06-23T09:38:02.9696559Z             },
2026-06-23T09:38:02.9696763Z             {
2026-06-23T09:38:02.9696930Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9697043Z               "line": 9546
2026-06-23T09:38:02.9697144Z             },
2026-06-23T09:38:02.9697247Z             {
2026-06-23T09:38:02.9697394Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-23T09:38:02.9697499Z               "line": 30
2026-06-23T09:38:02.9697689Z             },
2026-06-23T09:38:02.9697790Z             {
2026-06-23T09:38:02.9697928Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-23T09:38:02.9698032Z               "line": 73
2026-06-23T09:38:02.9698134Z             }
2026-06-23T09:38:02.9698248Z           ]
2026-06-23T09:38:02.9698352Z         }
2026-06-23T09:38:02.9698458Z       }
2026-06-23T09:38:02.9698548Z     },
2026-06-23T09:38:02.9698652Z     {
2026-06-23T09:38:02.9698801Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-23T09:38:02.9702933Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-23T09:38:02.9703085Z       "requiredStages": [
2026-06-23T09:38:02.9703190Z         "impl",
2026-06-23T09:38:02.9703300Z         "unit",
2026-06-23T09:38:02.9703405Z         "int"
2026-06-23T09:38:02.9703515Z       ],
2026-06-23T09:38:02.9703625Z       "stages": {
2026-06-23T09:38:02.9703720Z         "doc": {
2026-06-23T09:38:02.9703840Z           "complete": false,
2026-06-23T09:38:02.9703944Z           "evidence": []
2026-06-23T09:38:02.9704053Z         },
2026-06-23T09:38:02.9704159Z         "impl": {
2026-06-23T09:38:02.9704268Z           "complete": true,
2026-06-23T09:38:02.9704382Z           "evidence": [
2026-06-23T09:38:02.9704474Z             {
2026-06-23T09:38:02.9704630Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9704740Z               "line": 518
2026-06-23T09:38:02.9704846Z             },
2026-06-23T09:38:02.9704949Z             {
2026-06-23T09:38:02.9705094Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9705209Z               "line": 755
2026-06-23T09:38:02.9705311Z             }
2026-06-23T09:38:02.9705411Z           ]
2026-06-23T09:38:02.9705507Z         },
2026-06-23T09:38:02.9705612Z         "int": {
2026-06-23T09:38:02.9705721Z           "complete": true,
2026-06-23T09:38:02.9705836Z           "evidence": [
2026-06-23T09:38:02.9705945Z             {
2026-06-23T09:38:02.9706084Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9706198Z               "line": 1220
2026-06-23T09:38:02.9706303Z             },
2026-06-23T09:38:02.9706408Z             {
2026-06-23T09:38:02.9706556Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-23T09:38:02.9706656Z               "line": 312
2026-06-23T09:38:02.9706767Z             }
2026-06-23T09:38:02.9706971Z           ]
2026-06-23T09:38:02.9707082Z         },
2026-06-23T09:38:02.9707185Z         "unit": {
2026-06-23T09:38:02.9707305Z           "complete": true,
2026-06-23T09:38:02.9707401Z           "evidence": [
2026-06-23T09:38:02.9707504Z             {
2026-06-23T09:38:02.9707656Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9707859Z               "line": 872
2026-06-23T09:38:02.9707963Z             }
2026-06-23T09:38:02.9708064Z           ]
2026-06-23T09:38:02.9708169Z         }
2026-06-23T09:38:02.9708268Z       }
2026-06-23T09:38:02.9708370Z     },
2026-06-23T09:38:02.9708474Z     {
2026-06-23T09:38:02.9708597Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-23T09:38:02.9708865Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-23T09:38:02.9709061Z       "requiredStages": [
2026-06-23T09:38:02.9709170Z         "impl",
2026-06-23T09:38:02.9709275Z         "unit"
2026-06-23T09:38:02.9709375Z       ],
2026-06-23T09:38:02.9709480Z       "stages": {
2026-06-23T09:38:02.9709586Z         "doc": {
2026-06-23T09:38:02.9709690Z           "complete": true,
2026-06-23T09:38:02.9709805Z           "evidence": [
2026-06-23T09:38:02.9709905Z             {
2026-06-23T09:38:02.9710038Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9710143Z               "line": 133
2026-06-23T09:38:02.9710249Z             }
2026-06-23T09:38:02.9710348Z           ]
2026-06-23T09:38:02.9710438Z         },
2026-06-23T09:38:02.9710542Z         "impl": {
2026-06-23T09:38:02.9710656Z           "complete": true,
2026-06-23T09:38:02.9710765Z           "evidence": [
2026-06-23T09:38:02.9710859Z             {
2026-06-23T09:38:02.9710998Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:02.9711107Z               "line": 65
2026-06-23T09:38:02.9711218Z             },
2026-06-23T09:38:02.9711318Z             {
2026-06-23T09:38:02.9711445Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T09:38:02.9711557Z               "line": 17
2026-06-23T09:38:02.9711666Z             },
2026-06-23T09:38:02.9711770Z             {
2026-06-23T09:38:02.9711914Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9712028Z               "line": 146
2026-06-23T09:38:02.9712123Z             },
2026-06-23T09:38:02.9712224Z             {
2026-06-23T09:38:02.9712362Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9712472Z               "line": 310
2026-06-23T09:38:02.9712586Z             },
2026-06-23T09:38:02.9712686Z             {
2026-06-23T09:38:02.9712830Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:02.9712934Z               "line": 441
2026-06-23T09:38:02.9713047Z             },
2026-06-23T09:38:02.9713148Z             {
2026-06-23T09:38:02.9713279Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:02.9713393Z               "line": 32
2026-06-23T09:38:02.9713488Z             },
2026-06-23T09:38:02.9713585Z             {
2026-06-23T09:38:02.9713717Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9713818Z               "line": 1360
2026-06-23T09:38:02.9713928Z             },
2026-06-23T09:38:02.9714027Z             {
2026-06-23T09:38:02.9714161Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9714271Z               "line": 7226
2026-06-23T09:38:02.9714375Z             },
2026-06-23T09:38:02.9714476Z             {
2026-06-23T09:38:02.9714609Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9714719Z               "line": 7508
2026-06-23T09:38:02.9714824Z             }
2026-06-23T09:38:02.9714933Z           ]
2026-06-23T09:38:02.9715029Z         },
2026-06-23T09:38:02.9715129Z         "int": {
2026-06-23T09:38:02.9715239Z           "complete": false,
2026-06-23T09:38:02.9715354Z           "evidence": []
2026-06-23T09:38:02.9715454Z         },
2026-06-23T09:38:02.9715558Z         "unit": {
2026-06-23T09:38:02.9715669Z           "complete": true,
2026-06-23T09:38:02.9715881Z           "evidence": [
2026-06-23T09:38:02.9715986Z             {
2026-06-23T09:38:02.9716116Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T09:38:02.9716224Z               "line": 94
2026-06-23T09:38:02.9716330Z             },
2026-06-23T09:38:02.9716429Z             {
2026-06-23T09:38:02.9716562Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T09:38:02.9716763Z               "line": 111
2026-06-23T09:38:02.9716877Z             },
2026-06-23T09:38:02.9716978Z             {
2026-06-23T09:38:02.9717116Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T09:38:02.9717226Z               "line": 124
2026-06-23T09:38:02.9717327Z             },
2026-06-23T09:38:02.9717430Z             {
2026-06-23T09:38:02.9717559Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T09:38:02.9717675Z               "line": 134
2026-06-23T09:38:02.9717773Z             },
2026-06-23T09:38:02.9717879Z             {
2026-06-23T09:38:02.9718013Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T09:38:02.9718126Z               "line": 144
2026-06-23T09:38:02.9718236Z             },
2026-06-23T09:38:02.9718335Z             {
2026-06-23T09:38:02.9718457Z               "path": "crates/spt-proto/src/id.rs",
2026-06-23T09:38:02.9718567Z               "line": 156
2026-06-23T09:38:02.9718673Z             },
2026-06-23T09:38:02.9718781Z             {
2026-06-23T09:38:02.9718930Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9719134Z               "line": 746
2026-06-23T09:38:02.9719236Z             },
2026-06-23T09:38:02.9719340Z             {
2026-06-23T09:38:02.9719487Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:02.9719602Z               "line": 309
2026-06-23T09:38:02.9719706Z             }
2026-06-23T09:38:02.9719811Z           ]
2026-06-23T09:38:02.9719912Z         }
2026-06-23T09:38:02.9720007Z       }
2026-06-23T09:38:02.9720116Z     },
2026-06-23T09:38:02.9720218Z     {
2026-06-23T09:38:02.9720360Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-23T09:38:02.9720524Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-23T09:38:02.9720626Z       "requiredStages": [
2026-06-23T09:38:02.9720737Z         "impl",
2026-06-23T09:38:02.9720843Z         "unit"
2026-06-23T09:38:02.9720946Z       ],
2026-06-23T09:38:02.9721049Z       "stages": {
2026-06-23T09:38:02.9721160Z         "doc": {
2026-06-23T09:38:02.9721277Z           "complete": false,
2026-06-23T09:38:02.9721381Z           "evidence": []
2026-06-23T09:38:02.9721487Z         },
2026-06-23T09:38:02.9721601Z         "impl": {
2026-06-23T09:38:02.9721710Z           "complete": true,
2026-06-23T09:38:02.9721821Z           "evidence": [
2026-06-23T09:38:02.9721916Z             {
2026-06-23T09:38:02.9722059Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:02.9722164Z               "line": 128
2026-06-23T09:38:02.9722273Z             }
2026-06-23T09:38:02.9722374Z           ]
2026-06-23T09:38:02.9722469Z         },
2026-06-23T09:38:02.9722574Z         "int": {
2026-06-23T09:38:02.9722693Z           "complete": false,
2026-06-23T09:38:02.9722798Z           "evidence": []
2026-06-23T09:38:02.9722907Z         },
2026-06-23T09:38:02.9723018Z         "unit": {
2026-06-23T09:38:02.9723128Z           "complete": true,
2026-06-23T09:38:02.9723236Z           "evidence": [
2026-06-23T09:38:02.9723342Z             {
2026-06-23T09:38:02.9723480Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:02.9723583Z               "line": 205
2026-06-23T09:38:02.9723683Z             }
2026-06-23T09:38:02.9723788Z           ]
2026-06-23T09:38:02.9723891Z         }
2026-06-23T09:38:02.9723986Z       }
2026-06-23T09:38:02.9724078Z     },
2026-06-23T09:38:02.9724173Z     {
2026-06-23T09:38:02.9724310Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-23T09:38:02.9724483Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-23T09:38:02.9724592Z       "requiredStages": [
2026-06-23T09:38:02.9724797Z         "impl",
2026-06-23T09:38:02.9724906Z         "unit"
2026-06-23T09:38:02.9725007Z       ],
2026-06-23T09:38:02.9725116Z       "stages": {
2026-06-23T09:38:02.9725226Z         "doc": {
2026-06-23T09:38:02.9725332Z           "complete": false,
2026-06-23T09:38:02.9725436Z           "evidence": []
2026-06-23T09:38:02.9725541Z         },
2026-06-23T09:38:02.9725765Z         "impl": {
2026-06-23T09:38:02.9725875Z           "complete": true,
2026-06-23T09:38:02.9725981Z           "evidence": [
2026-06-23T09:38:02.9726093Z             {
2026-06-23T09:38:02.9726229Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9726347Z               "line": 367
2026-06-23T09:38:02.9726450Z             },
2026-06-23T09:38:02.9726555Z             {
2026-06-23T09:38:02.9726695Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9726808Z               "line": 378
2026-06-23T09:38:02.9726909Z             },
2026-06-23T09:38:02.9727009Z             {
2026-06-23T09:38:02.9727146Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9727253Z               "line": 396
2026-06-23T09:38:02.9727358Z             }
2026-06-23T09:38:02.9727461Z           ]
2026-06-23T09:38:02.9727562Z         },
2026-06-23T09:38:02.9727671Z         "int": {
2026-06-23T09:38:02.9727786Z           "complete": false,
2026-06-23T09:38:02.9727911Z           "evidence": []
2026-06-23T09:38:02.9728010Z         },
2026-06-23T09:38:02.9728120Z         "unit": {
2026-06-23T09:38:02.9728226Z           "complete": true,
2026-06-23T09:38:02.9728333Z           "evidence": [
2026-06-23T09:38:02.9728430Z             {
2026-06-23T09:38:02.9728564Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9728667Z               "line": 420
2026-06-23T09:38:02.9728771Z             },
2026-06-23T09:38:02.9728886Z             {
2026-06-23T09:38:02.9729098Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9729209Z               "line": 441
2026-06-23T09:38:02.9729318Z             },
2026-06-23T09:38:02.9729423Z             {
2026-06-23T09:38:02.9729566Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9729670Z               "line": 811
2026-06-23T09:38:02.9729776Z             },
2026-06-23T09:38:02.9729866Z             {
2026-06-23T09:38:02.9730004Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9730120Z               "line": 822
2026-06-23T09:38:02.9730219Z             },
2026-06-23T09:38:02.9730323Z             {
2026-06-23T09:38:02.9730458Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9730563Z               "line": 835
2026-06-23T09:38:02.9730667Z             }
2026-06-23T09:38:02.9730764Z           ]
2026-06-23T09:38:02.9730862Z         }
2026-06-23T09:38:02.9730972Z       }
2026-06-23T09:38:02.9731069Z     },
2026-06-23T09:38:02.9731168Z     {
2026-06-23T09:38:02.9731321Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-23T09:38:02.9741305Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-23T09:38:02.9741761Z       "requiredStages": [
2026-06-23T09:38:02.9741872Z         "impl",
2026-06-23T09:38:02.9741977Z         "unit",
2026-06-23T09:38:02.9742080Z         "int"
2026-06-23T09:38:02.9742189Z       ],
2026-06-23T09:38:02.9742299Z       "stages": {
2026-06-23T09:38:02.9742402Z         "doc": {
2026-06-23T09:38:02.9742515Z           "complete": false,
2026-06-23T09:38:02.9742622Z           "evidence": []
2026-06-23T09:38:02.9742717Z         },
2026-06-23T09:38:02.9742821Z         "impl": {
2026-06-23T09:38:02.9742951Z           "complete": true,
2026-06-23T09:38:02.9743064Z           "evidence": [
2026-06-23T09:38:02.9743174Z             {
2026-06-23T09:38:02.9743322Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9743431Z               "line": 322
2026-06-23T09:38:02.9743527Z             },
2026-06-23T09:38:02.9743622Z             {
2026-06-23T09:38:02.9743751Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9743857Z               "line": 759
2026-06-23T09:38:02.9743961Z             },
2026-06-23T09:38:02.9744061Z             {
2026-06-23T09:38:02.9744191Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9744308Z               "line": 1098
2026-06-23T09:38:02.9744395Z             }
2026-06-23T09:38:02.9744496Z           ]
2026-06-23T09:38:02.9744600Z         },
2026-06-23T09:38:02.9744704Z         "int": {
2026-06-23T09:38:02.9744828Z           "complete": true,
2026-06-23T09:38:02.9744936Z           "evidence": [
2026-06-23T09:38:02.9745040Z             {
2026-06-23T09:38:02.9745222Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:02.9745326Z               "line": 343
2026-06-23T09:38:02.9745431Z             },
2026-06-23T09:38:02.9745527Z             {
2026-06-23T09:38:02.9745707Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:02.9745804Z               "line": 469
2026-06-23T09:38:02.9745908Z             }
2026-06-23T09:38:02.9746017Z           ]
2026-06-23T09:38:02.9746119Z         },
2026-06-23T09:38:02.9746227Z         "unit": {
2026-06-23T09:38:02.9746337Z           "complete": true,
2026-06-23T09:38:02.9746443Z           "evidence": [
2026-06-23T09:38:02.9746547Z             {
2026-06-23T09:38:02.9746695Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9746800Z               "line": 2775
2026-06-23T09:38:02.9746899Z             }
2026-06-23T09:38:02.9747010Z           ]
2026-06-23T09:38:02.9747110Z         }
2026-06-23T09:38:02.9747219Z       }
2026-06-23T09:38:02.9747320Z     },
2026-06-23T09:38:02.9747425Z     {
2026-06-23T09:38:02.9747661Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-23T09:38:02.9754926Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-23T09:38:02.9755255Z       "requiredStages": [
2026-06-23T09:38:02.9755364Z         "doc",
2026-06-23T09:38:02.9755464Z         "impl",
2026-06-23T09:38:02.9755562Z         "unit",
2026-06-23T09:38:02.9755667Z         "int"
2026-06-23T09:38:02.9755763Z       ],
2026-06-23T09:38:02.9755867Z       "stages": {
2026-06-23T09:38:02.9755967Z         "doc": {
2026-06-23T09:38:02.9756087Z           "complete": true,
2026-06-23T09:38:02.9756196Z           "evidence": [
2026-06-23T09:38:02.9756296Z             {
2026-06-23T09:38:02.9756435Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9756544Z               "line": 454
2026-06-23T09:38:02.9756650Z             }
2026-06-23T09:38:02.9756754Z           ]
2026-06-23T09:38:02.9756858Z         },
2026-06-23T09:38:02.9756964Z         "impl": {
2026-06-23T09:38:02.9757078Z           "complete": true,
2026-06-23T09:38:02.9757197Z           "evidence": [
2026-06-23T09:38:02.9757289Z             {
2026-06-23T09:38:02.9757435Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:02.9757541Z               "line": 355
2026-06-23T09:38:02.9757652Z             },
2026-06-23T09:38:02.9757750Z             {
2026-06-23T09:38:02.9757895Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9758004Z               "line": 493
2026-06-23T09:38:02.9758103Z             },
2026-06-23T09:38:02.9758207Z             {
2026-06-23T09:38:02.9758352Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9758460Z               "line": 1839
2026-06-23T09:38:02.9758670Z             },
2026-06-23T09:38:02.9758775Z             {
2026-06-23T09:38:02.9758910Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9759094Z               "line": 383
2026-06-23T09:38:02.9759199Z             }
2026-06-23T09:38:02.9759304Z           ]
2026-06-23T09:38:02.9759409Z         },
2026-06-23T09:38:02.9759610Z         "int": {
2026-06-23T09:38:02.9759714Z           "complete": true,
2026-06-23T09:38:02.9759824Z           "evidence": [
2026-06-23T09:38:02.9759924Z             {
2026-06-23T09:38:02.9760077Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:02.9760183Z               "line": 745
2026-06-23T09:38:02.9760281Z             },
2026-06-23T09:38:02.9760380Z             {
2026-06-23T09:38:02.9760524Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:02.9760636Z               "line": 862
2026-06-23T09:38:02.9760735Z             },
2026-06-23T09:38:02.9760836Z             {
2026-06-23T09:38:02.9761008Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-23T09:38:02.9761122Z               "line": 268
2026-06-23T09:38:02.9761228Z             }
2026-06-23T09:38:02.9761332Z           ]
2026-06-23T09:38:02.9761427Z         },
2026-06-23T09:38:02.9761528Z         "unit": {
2026-06-23T09:38:02.9761642Z           "complete": true,
2026-06-23T09:38:02.9761747Z           "evidence": [
2026-06-23T09:38:02.9761857Z             {
2026-06-23T09:38:02.9761985Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9762086Z               "line": 1082
2026-06-23T09:38:02.9762190Z             },
2026-06-23T09:38:02.9762295Z             {
2026-06-23T09:38:02.9762434Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:02.9762543Z               "line": 1116
2026-06-23T09:38:02.9762647Z             }
2026-06-23T09:38:02.9762759Z           ]
2026-06-23T09:38:02.9762848Z         }
2026-06-23T09:38:02.9762958Z       }
2026-06-23T09:38:02.9763060Z     },
2026-06-23T09:38:02.9763163Z     {
2026-06-23T09:38:02.9763300Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-23T09:38:02.9763903Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-23T09:38:02.9764028Z       "requiredStages": [
2026-06-23T09:38:02.9764133Z         "impl",
2026-06-23T09:38:02.9764241Z         "unit"
2026-06-23T09:38:02.9764338Z       ],
2026-06-23T09:38:02.9764447Z       "stages": {
2026-06-23T09:38:02.9764561Z         "doc": {
2026-06-23T09:38:02.9764667Z           "complete": false,
2026-06-23T09:38:02.9764780Z           "evidence": []
2026-06-23T09:38:02.9764881Z         },
2026-06-23T09:38:02.9764977Z         "impl": {
2026-06-23T09:38:02.9765091Z           "complete": true,
2026-06-23T09:38:02.9765190Z           "evidence": [
2026-06-23T09:38:02.9765292Z             {
2026-06-23T09:38:02.9765434Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9765544Z               "line": 759
2026-06-23T09:38:02.9765645Z             }
2026-06-23T09:38:02.9765753Z           ]
2026-06-23T09:38:02.9765853Z         },
2026-06-23T09:38:02.9765967Z         "int": {
2026-06-23T09:38:02.9766084Z           "complete": false,
2026-06-23T09:38:02.9766198Z           "evidence": []
2026-06-23T09:38:02.9766304Z         },
2026-06-23T09:38:02.9766404Z         "unit": {
2026-06-23T09:38:02.9766522Z           "complete": true,
2026-06-23T09:38:02.9766629Z           "evidence": [
2026-06-23T09:38:02.9766719Z             {
2026-06-23T09:38:02.9766861Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9766971Z               "line": 873
2026-06-23T09:38:02.9767075Z             }
2026-06-23T09:38:02.9767176Z           ]
2026-06-23T09:38:02.9767282Z         }
2026-06-23T09:38:02.9767381Z       }
2026-06-23T09:38:02.9767481Z     },
2026-06-23T09:38:02.9767705Z     {
2026-06-23T09:38:02.9767854Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-23T09:38:02.9770336Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-23T09:38:02.9770574Z       "requiredStages": [
2026-06-23T09:38:02.9770689Z         "impl",
2026-06-23T09:38:02.9770799Z         "unit",
2026-06-23T09:38:02.9770899Z         "int"
2026-06-23T09:38:02.9771002Z       ],
2026-06-23T09:38:02.9771117Z       "stages": {
2026-06-23T09:38:02.9771215Z         "doc": {
2026-06-23T09:38:02.9771324Z           "complete": false,
2026-06-23T09:38:02.9771430Z           "evidence": []
2026-06-23T09:38:02.9771539Z         },
2026-06-23T09:38:02.9771634Z         "impl": {
2026-06-23T09:38:02.9771740Z           "complete": true,
2026-06-23T09:38:02.9771844Z           "evidence": [
2026-06-23T09:38:02.9771944Z             {
2026-06-23T09:38:02.9772098Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9772207Z               "line": 756
2026-06-23T09:38:02.9772312Z             }
2026-06-23T09:38:02.9772412Z           ]
2026-06-23T09:38:02.9772517Z         },
2026-06-23T09:38:02.9772627Z         "int": {
2026-06-23T09:38:02.9772736Z           "complete": true,
2026-06-23T09:38:02.9772846Z           "evidence": [
2026-06-23T09:38:02.9772946Z             {
2026-06-23T09:38:02.9773108Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-23T09:38:02.9773217Z               "line": 24
2026-06-23T09:38:02.9773324Z             }
2026-06-23T09:38:02.9773418Z           ]
2026-06-23T09:38:02.9773528Z         },
2026-06-23T09:38:02.9773634Z         "unit": {
2026-06-23T09:38:02.9773747Z           "complete": true,
2026-06-23T09:38:02.9773855Z           "evidence": [
2026-06-23T09:38:02.9773956Z             {
2026-06-23T09:38:02.9774102Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9774215Z               "line": 969
2026-06-23T09:38:02.9774317Z             }
2026-06-23T09:38:02.9774421Z           ]
2026-06-23T09:38:02.9774516Z         }
2026-06-23T09:38:02.9774622Z       }
2026-06-23T09:38:02.9774717Z     },
2026-06-23T09:38:02.9774821Z     {
2026-06-23T09:38:02.9774946Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-23T09:38:02.9778518Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-23T09:38:02.9778772Z       "requiredStages": [
2026-06-23T09:38:02.9778880Z         "impl",
2026-06-23T09:38:02.9779058Z         "unit",
2026-06-23T09:38:02.9779162Z         "int"
2026-06-23T09:38:02.9779361Z       ],
2026-06-23T09:38:02.9779472Z       "stages": {
2026-06-23T09:38:02.9779575Z         "doc": {
2026-06-23T09:38:02.9779681Z           "complete": false,
2026-06-23T09:38:02.9779795Z           "evidence": []
2026-06-23T09:38:02.9779885Z         },
2026-06-23T09:38:02.9779991Z         "impl": {
2026-06-23T09:38:02.9780105Z           "complete": true,
2026-06-23T09:38:02.9780204Z           "evidence": [
2026-06-23T09:38:02.9780310Z             {
2026-06-23T09:38:02.9780458Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9780567Z               "line": 396
2026-06-23T09:38:02.9780668Z             },
2026-06-23T09:38:02.9780777Z             {
2026-06-23T09:38:02.9780920Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9781026Z               "line": 343
2026-06-23T09:38:02.9781139Z             },
2026-06-23T09:38:02.9781240Z             {
2026-06-23T09:38:02.9781369Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9781477Z               "line": 2104
2026-06-23T09:38:02.9781587Z             },
2026-06-23T09:38:02.9781691Z             {
2026-06-23T09:38:02.9781818Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9781932Z               "line": 3846
2026-06-23T09:38:02.9782029Z             }
2026-06-23T09:38:02.9782137Z           ]
2026-06-23T09:38:02.9782224Z         },
2026-06-23T09:38:02.9782324Z         "int": {
2026-06-23T09:38:02.9782442Z           "complete": true,
2026-06-23T09:38:02.9782543Z           "evidence": [
2026-06-23T09:38:02.9782653Z             {
2026-06-23T09:38:02.9782810Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-23T09:38:02.9782925Z               "line": 353
2026-06-23T09:38:02.9783020Z             },
2026-06-23T09:38:02.9783129Z             {
2026-06-23T09:38:02.9783301Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-23T09:38:02.9783406Z               "line": 23
2026-06-23T09:38:02.9783511Z             }
2026-06-23T09:38:02.9783616Z           ]
2026-06-23T09:38:02.9783726Z         },
2026-06-23T09:38:02.9783826Z         "unit": {
2026-06-23T09:38:02.9783936Z           "complete": true,
2026-06-23T09:38:02.9784045Z           "evidence": [
2026-06-23T09:38:02.9784151Z             {
2026-06-23T09:38:02.9784293Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9784396Z               "line": 743
2026-06-23T09:38:02.9784497Z             },
2026-06-23T09:38:02.9784600Z             {
2026-06-23T09:38:02.9784727Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9784838Z               "line": 9240
2026-06-23T09:38:02.9784943Z             }
2026-06-23T09:38:02.9785042Z           ]
2026-06-23T09:38:02.9785134Z         }
2026-06-23T09:38:02.9785234Z       }
2026-06-23T09:38:02.9785334Z     },
2026-06-23T09:38:02.9785429Z     {
2026-06-23T09:38:02.9785573Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-23T09:38:02.9788859Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-23T09:38:02.9789280Z       "requiredStages": [
2026-06-23T09:38:02.9789384Z         "impl",
2026-06-23T09:38:02.9789489Z         "unit",
2026-06-23T09:38:02.9789595Z         "int"
2026-06-23T09:38:02.9789704Z       ],
2026-06-23T09:38:02.9789807Z       "stages": {
2026-06-23T09:38:02.9789916Z         "doc": {
2026-06-23T09:38:02.9790012Z           "complete": false,
2026-06-23T09:38:02.9790121Z           "evidence": []
2026-06-23T09:38:02.9790226Z         },
2026-06-23T09:38:02.9790332Z         "impl": {
2026-06-23T09:38:02.9790441Z           "complete": true,
2026-06-23T09:38:02.9790551Z           "evidence": [
2026-06-23T09:38:02.9790656Z             {
2026-06-23T09:38:02.9790808Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9790914Z               "line": 64
2026-06-23T09:38:02.9791013Z             },
2026-06-23T09:38:02.9791117Z             {
2026-06-23T09:38:02.9791272Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9791376Z               "line": 78
2026-06-23T09:38:02.9791480Z             },
2026-06-23T09:38:02.9791582Z             {
2026-06-23T09:38:02.9791728Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9791834Z               "line": 170
2026-06-23T09:38:02.9791939Z             },
2026-06-23T09:38:02.9792047Z             {
2026-06-23T09:38:02.9792185Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9792293Z               "line": 185
2026-06-23T09:38:02.9792393Z             },
2026-06-23T09:38:02.9792492Z             {
2026-06-23T09:38:02.9792641Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9792749Z               "line": 195
2026-06-23T09:38:02.9792861Z             },
2026-06-23T09:38:02.9792960Z             {
2026-06-23T09:38:02.9793108Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9793213Z               "line": 205
2026-06-23T09:38:02.9793322Z             },
2026-06-23T09:38:02.9793428Z             {
2026-06-23T09:38:02.9793566Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9793675Z               "line": 299
2026-06-23T09:38:02.9793776Z             },
2026-06-23T09:38:02.9793880Z             {
2026-06-23T09:38:02.9794028Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9794134Z               "line": 313
2026-06-23T09:38:02.9794237Z             },
2026-06-23T09:38:02.9794343Z             {
2026-06-23T09:38:02.9794491Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9794591Z               "line": 382
2026-06-23T09:38:02.9794702Z             },
2026-06-23T09:38:02.9794806Z             {
2026-06-23T09:38:02.9794938Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9795052Z               "line": 442
2026-06-23T09:38:02.9795151Z             },
2026-06-23T09:38:02.9795260Z             {
2026-06-23T09:38:02.9795408Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9795522Z               "line": 460
2026-06-23T09:38:02.9795621Z             }
2026-06-23T09:38:02.9795723Z           ]
2026-06-23T09:38:02.9795832Z         },
2026-06-23T09:38:02.9795927Z         "int": {
2026-06-23T09:38:02.9796043Z           "complete": true,
2026-06-23T09:38:02.9796142Z           "evidence": [
2026-06-23T09:38:02.9796251Z             {
2026-06-23T09:38:02.9796414Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-23T09:38:02.9796528Z               "line": 45
2026-06-23T09:38:02.9796638Z             },
2026-06-23T09:38:02.9796852Z             {
2026-06-23T09:38:02.9797015Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-23T09:38:02.9797129Z               "line": 354
2026-06-23T09:38:02.9797239Z             },
2026-06-23T09:38:02.9797340Z             {
2026-06-23T09:38:02.9797514Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-23T09:38:02.9797699Z               "line": 31
2026-06-23T09:38:02.9797803Z             }
2026-06-23T09:38:02.9797907Z           ]
2026-06-23T09:38:02.9798009Z         },
2026-06-23T09:38:02.9798118Z         "unit": {
2026-06-23T09:38:02.9798236Z           "complete": true,
2026-06-23T09:38:02.9798347Z           "evidence": [
2026-06-23T09:38:02.9798451Z             {
2026-06-23T09:38:02.9798595Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:02.9798704Z               "line": 778
2026-06-23T09:38:02.9798808Z             }
2026-06-23T09:38:02.9798914Z           ]
2026-06-23T09:38:02.9799109Z         }
2026-06-23T09:38:02.9799215Z       }
2026-06-23T09:38:02.9799324Z     },
2026-06-23T09:38:02.9799419Z     {
2026-06-23T09:38:02.9799554Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-23T09:38:02.9799801Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-23T09:38:02.9799921Z       "requiredStages": [
2026-06-23T09:38:02.9800019Z         "impl",
2026-06-23T09:38:02.9800126Z         "unit"
2026-06-23T09:38:02.9800231Z       ],
2026-06-23T09:38:02.9800339Z       "stages": {
2026-06-23T09:38:02.9800448Z         "doc": {
2026-06-23T09:38:02.9800554Z           "complete": false,
2026-06-23T09:38:02.9800668Z           "evidence": []
2026-06-23T09:38:02.9800767Z         },
2026-06-23T09:38:02.9800864Z         "impl": {
2026-06-23T09:38:02.9800978Z           "complete": true,
2026-06-23T09:38:02.9801087Z           "evidence": [
2026-06-23T09:38:02.9801193Z             {
2026-06-23T09:38:02.9801325Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T09:38:02.9801430Z               "line": 14
2026-06-23T09:38:02.9801531Z             },
2026-06-23T09:38:02.9801636Z             {
2026-06-23T09:38:02.9801770Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:02.9801879Z               "line": 566
2026-06-23T09:38:02.9801983Z             }
2026-06-23T09:38:02.9802085Z           ]
2026-06-23T09:38:02.9802184Z         },
2026-06-23T09:38:02.9802289Z         "int": {
2026-06-23T09:38:02.9802409Z           "complete": false,
2026-06-23T09:38:02.9802518Z           "evidence": []
2026-06-23T09:38:02.9802621Z         },
2026-06-23T09:38:02.9802731Z         "unit": {
2026-06-23T09:38:02.9802840Z           "complete": true,
2026-06-23T09:38:02.9802943Z           "evidence": [
2026-06-23T09:38:02.9803048Z             {
2026-06-23T09:38:02.9803187Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T09:38:02.9803301Z               "line": 130
2026-06-23T09:38:02.9803396Z             },
2026-06-23T09:38:02.9803502Z             {
2026-06-23T09:38:02.9803630Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T09:38:02.9803750Z               "line": 138
2026-06-23T09:38:02.9803854Z             },
2026-06-23T09:38:02.9803958Z             {
2026-06-23T09:38:02.9804097Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T09:38:02.9804202Z               "line": 146
2026-06-23T09:38:02.9804302Z             },
2026-06-23T09:38:02.9804408Z             {
2026-06-23T09:38:02.9804545Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T09:38:02.9804646Z               "line": 154
2026-06-23T09:38:02.9804755Z             },
2026-06-23T09:38:02.9804850Z             {
2026-06-23T09:38:02.9804980Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T09:38:02.9805093Z               "line": 162
2026-06-23T09:38:02.9805194Z             },
2026-06-23T09:38:02.9805305Z             {
2026-06-23T09:38:02.9805431Z               "path": "crates/spt/src/api/auth.rs",
2026-06-23T09:38:02.9805540Z               "line": 170
2026-06-23T09:38:02.9805651Z             }
2026-06-23T09:38:02.9805881Z           ]
2026-06-23T09:38:02.9805982Z         }
2026-06-23T09:38:02.9806077Z       }
2026-06-23T09:38:02.9806182Z     },
2026-06-23T09:38:02.9806274Z     {
2026-06-23T09:38:02.9806406Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-23T09:38:02.9807336Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-23T09:38:02.9807557Z       "requiredStages": [
2026-06-23T09:38:02.9807660Z         "impl",
2026-06-23T09:38:02.9807766Z         "unit"
2026-06-23T09:38:02.9807867Z       ],
2026-06-23T09:38:02.9807970Z       "stages": {
2026-06-23T09:38:02.9808079Z         "doc": {
2026-06-23T09:38:02.9808189Z           "complete": false,
2026-06-23T09:38:02.9808297Z           "evidence": []
2026-06-23T09:38:02.9808400Z         },
2026-06-23T09:38:02.9808511Z         "impl": {
2026-06-23T09:38:02.9808621Z           "complete": true,
2026-06-23T09:38:02.9808725Z           "evidence": [
2026-06-23T09:38:02.9808826Z             {
2026-06-23T09:38:02.9809068Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T09:38:02.9809169Z               "line": 34
2026-06-23T09:38:02.9809274Z             }
2026-06-23T09:38:02.9809378Z           ]
2026-06-23T09:38:02.9809484Z         },
2026-06-23T09:38:02.9809593Z         "int": {
2026-06-23T09:38:02.9809697Z           "complete": false,
2026-06-23T09:38:02.9809808Z           "evidence": []
2026-06-23T09:38:02.9809908Z         },
2026-06-23T09:38:02.9810008Z         "unit": {
2026-06-23T09:38:02.9810119Z           "complete": true,
2026-06-23T09:38:02.9810227Z           "evidence": [
2026-06-23T09:38:02.9810327Z             {
2026-06-23T09:38:02.9810490Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T09:38:02.9810604Z               "line": 188
2026-06-23T09:38:02.9810705Z             },
2026-06-23T09:38:02.9810805Z             {
2026-06-23T09:38:02.9810974Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T09:38:02.9811084Z               "line": 200
2026-06-23T09:38:02.9811190Z             },
2026-06-23T09:38:02.9811284Z             {
2026-06-23T09:38:02.9811462Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T09:38:02.9811566Z               "line": 211
2026-06-23T09:38:02.9811671Z             },
2026-06-23T09:38:02.9811772Z             {
2026-06-23T09:38:02.9811937Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T09:38:02.9812048Z               "line": 253
2026-06-23T09:38:02.9812152Z             },
2026-06-23T09:38:02.9812257Z             {
2026-06-23T09:38:02.9812411Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T09:38:02.9812520Z               "line": 277
2026-06-23T09:38:02.9812625Z             },
2026-06-23T09:38:02.9812730Z             {
2026-06-23T09:38:02.9812886Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T09:38:02.9812998Z               "line": 300
2026-06-23T09:38:02.9813101Z             },
2026-06-23T09:38:02.9813201Z             {
2026-06-23T09:38:02.9813367Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-23T09:38:02.9813479Z               "line": 316
2026-06-23T09:38:02.9813579Z             }
2026-06-23T09:38:02.9813685Z           ]
2026-06-23T09:38:02.9813789Z         }
2026-06-23T09:38:02.9813894Z       }
2026-06-23T09:38:02.9813991Z     },
2026-06-23T09:38:02.9814095Z     {
2026-06-23T09:38:02.9814223Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-23T09:38:02.9814795Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-23T09:38:02.9814925Z       "requiredStages": [
2026-06-23T09:38:02.9815124Z         "impl",
2026-06-23T09:38:02.9815235Z         "unit"
2026-06-23T09:38:02.9815325Z       ],
2026-06-23T09:38:02.9815434Z       "stages": {
2026-06-23T09:38:02.9815540Z         "doc": {
2026-06-23T09:38:02.9815649Z           "complete": false,
2026-06-23T09:38:02.9815759Z           "evidence": []
2026-06-23T09:38:02.9815851Z         },
2026-06-23T09:38:02.9816049Z         "impl": {
2026-06-23T09:38:02.9816168Z           "complete": true,
2026-06-23T09:38:02.9816277Z           "evidence": [
2026-06-23T09:38:02.9816384Z             {
2026-06-23T09:38:02.9816528Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9816652Z               "line": 29
2026-06-23T09:38:02.9816756Z             },
2026-06-23T09:38:02.9816867Z             {
2026-06-23T09:38:02.9817009Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9817115Z               "line": 174
2026-06-23T09:38:02.9817219Z             },
2026-06-23T09:38:02.9817314Z             {
2026-06-23T09:38:02.9817463Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9817577Z               "line": 194
2026-06-23T09:38:02.9817686Z             },
2026-06-23T09:38:02.9817788Z             {
2026-06-23T09:38:02.9817929Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9818034Z               "line": 222
2026-06-23T09:38:02.9818141Z             }
2026-06-23T09:38:02.9818253Z           ]
2026-06-23T09:38:02.9818354Z         },
2026-06-23T09:38:02.9818461Z         "int": {
2026-06-23T09:38:02.9818573Z           "complete": false,
2026-06-23T09:38:02.9818681Z           "evidence": []
2026-06-23T09:38:02.9818787Z         },
2026-06-23T09:38:02.9818889Z         "unit": {
2026-06-23T09:38:02.9819095Z           "complete": true,
2026-06-23T09:38:02.9819200Z           "evidence": [
2026-06-23T09:38:02.9819304Z             {
2026-06-23T09:38:02.9819434Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9819538Z               "line": 329
2026-06-23T09:38:02.9819642Z             },
2026-06-23T09:38:02.9819744Z             {
2026-06-23T09:38:02.9819876Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9819972Z               "line": 344
2026-06-23T09:38:02.9820077Z             },
2026-06-23T09:38:02.9820172Z             {
2026-06-23T09:38:02.9820316Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9820430Z               "line": 417
2026-06-23T09:38:02.9820525Z             },
2026-06-23T09:38:02.9820631Z             {
2026-06-23T09:38:02.9820758Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9820863Z               "line": 433
2026-06-23T09:38:02.9820970Z             },
2026-06-23T09:38:02.9821078Z             {
2026-06-23T09:38:02.9821216Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9821318Z               "line": 492
2026-06-23T09:38:02.9821426Z             },
2026-06-23T09:38:02.9821525Z             {
2026-06-23T09:38:02.9821664Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9821783Z               "line": 506
2026-06-23T09:38:02.9821883Z             },
2026-06-23T09:38:02.9821974Z             {
2026-06-23T09:38:02.9822112Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9822212Z               "line": 517
2026-06-23T09:38:02.9822313Z             },
2026-06-23T09:38:02.9822422Z             {
2026-06-23T09:38:02.9822565Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:02.9822665Z               "line": 528
2026-06-23T09:38:02.9822770Z             }
2026-06-23T09:38:02.9822870Z           ]
2026-06-23T09:38:02.9822976Z         }
2026-06-23T09:38:02.9823080Z       }
2026-06-23T09:38:02.9823185Z     },
2026-06-23T09:38:02.9823285Z     {
2026-06-23T09:38:02.9823433Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-23T09:38:02.9824125Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-23T09:38:02.9824345Z       "requiredStages": [
2026-06-23T09:38:02.9824445Z         "impl",
2026-06-23T09:38:02.9824546Z         "unit"
2026-06-23T09:38:02.9824655Z       ],
2026-06-23T09:38:02.9824769Z       "stages": {
2026-06-23T09:38:02.9824875Z         "doc": {
2026-06-23T09:38:02.9825084Z           "complete": false,
2026-06-23T09:38:02.9825194Z           "evidence": []
2026-06-23T09:38:02.9825299Z         },
2026-06-23T09:38:02.9825408Z         "impl": {
2026-06-23T09:38:02.9825519Z           "complete": true,
2026-06-23T09:38:02.9825632Z           "evidence": [
2026-06-23T09:38:02.9825732Z             {
2026-06-23T09:38:02.9825899Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9826004Z               "line": 27
2026-06-23T09:38:02.9826115Z             },
2026-06-23T09:38:02.9826214Z             {
2026-06-23T09:38:02.9826382Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9826492Z               "line": 110
2026-06-23T09:38:02.9826594Z             },
2026-06-23T09:38:02.9826699Z             {
2026-06-23T09:38:02.9826851Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9826959Z               "line": 153
2026-06-23T09:38:02.9827064Z             },
2026-06-23T09:38:02.9827170Z             {
2026-06-23T09:38:02.9827326Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9827437Z               "line": 182
2026-06-23T09:38:02.9827537Z             },
2026-06-23T09:38:02.9827636Z             {
2026-06-23T09:38:02.9827813Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9827922Z               "line": 31
2026-06-23T09:38:02.9828023Z             },
2026-06-23T09:38:02.9828127Z             {
2026-06-23T09:38:02.9828294Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9828400Z               "line": 113
2026-06-23T09:38:02.9828509Z             },
2026-06-23T09:38:02.9828614Z             {
2026-06-23T09:38:02.9828780Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9828881Z               "line": 138
2026-06-23T09:38:02.9829053Z             }
2026-06-23T09:38:02.9829156Z           ]
2026-06-23T09:38:02.9829261Z         },
2026-06-23T09:38:02.9829366Z         "int": {
2026-06-23T09:38:02.9829483Z           "complete": false,
2026-06-23T09:38:02.9829598Z           "evidence": []
2026-06-23T09:38:02.9829698Z         },
2026-06-23T09:38:02.9829807Z         "unit": {
2026-06-23T09:38:02.9829912Z           "complete": true,
2026-06-23T09:38:02.9830018Z           "evidence": [
2026-06-23T09:38:02.9830121Z             {
2026-06-23T09:38:02.9830280Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9830390Z               "line": 261
2026-06-23T09:38:02.9830498Z             },
2026-06-23T09:38:02.9830600Z             {
2026-06-23T09:38:02.9830756Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9830866Z               "line": 276
2026-06-23T09:38:02.9830971Z             },
2026-06-23T09:38:02.9831076Z             {
2026-06-23T09:38:02.9831234Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9831338Z               "line": 293
2026-06-23T09:38:02.9831438Z             },
2026-06-23T09:38:02.9831544Z             {
2026-06-23T09:38:02.9831695Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9831796Z               "line": 310
2026-06-23T09:38:02.9831902Z             },
2026-06-23T09:38:02.9832004Z             {
2026-06-23T09:38:02.9832157Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9832268Z               "line": 327
2026-06-23T09:38:02.9832371Z             },
2026-06-23T09:38:02.9832476Z             {
2026-06-23T09:38:02.9832630Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:02.9832845Z               "line": 366
2026-06-23T09:38:02.9832949Z             },
2026-06-23T09:38:02.9833048Z             {
2026-06-23T09:38:02.9833221Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9833330Z               "line": 179
2026-06-23T09:38:02.9833435Z             },
2026-06-23T09:38:02.9833540Z             {
2026-06-23T09:38:02.9833817Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9833926Z               "line": 194
2026-06-23T09:38:02.9834031Z             },
2026-06-23T09:38:02.9834142Z             {
2026-06-23T09:38:02.9834301Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9834411Z               "line": 204
2026-06-23T09:38:02.9834515Z             },
2026-06-23T09:38:02.9834619Z             {
2026-06-23T09:38:02.9834786Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9834891Z               "line": 259
2026-06-23T09:38:02.9835005Z             },
2026-06-23T09:38:02.9835106Z             {
2026-06-23T09:38:02.9835272Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9835383Z               "line": 269
2026-06-23T09:38:02.9837983Z             },
2026-06-23T09:38:02.9838125Z             {
2026-06-23T09:38:02.9838317Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:02.9838444Z               "line": 283
2026-06-23T09:38:02.9838544Z             }
2026-06-23T09:38:02.9838650Z           ]
2026-06-23T09:38:02.9838759Z         }
2026-06-23T09:38:02.9838859Z       }
2026-06-23T09:38:02.9839035Z     },
2026-06-23T09:38:02.9839131Z     {
2026-06-23T09:38:02.9839275Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-23T09:38:02.9839504Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-23T09:38:02.9839623Z       "requiredStages": [],
2026-06-23T09:38:02.9839726Z       "stages": {
2026-06-23T09:38:02.9839831Z         "doc": {
2026-06-23T09:38:02.9839940Z           "complete": false,
2026-06-23T09:38:02.9840048Z           "evidence": []
2026-06-23T09:38:02.9840148Z         },
2026-06-23T09:38:02.9840253Z         "impl": {
2026-06-23T09:38:02.9840358Z           "complete": false,
2026-06-23T09:38:02.9840463Z           "evidence": []
2026-06-23T09:38:02.9840563Z         },
2026-06-23T09:38:02.9840668Z         "int": {
2026-06-23T09:38:02.9840767Z           "complete": false,
2026-06-23T09:38:02.9840883Z           "evidence": []
2026-06-23T09:38:02.9840983Z         },
2026-06-23T09:38:02.9841092Z         "unit": {
2026-06-23T09:38:02.9841203Z           "complete": false,
2026-06-23T09:38:02.9841311Z           "evidence": []
2026-06-23T09:38:02.9841416Z         }
2026-06-23T09:38:02.9841499Z       }
2026-06-23T09:38:02.9841603Z     },
2026-06-23T09:38:02.9841703Z     {
2026-06-23T09:38:02.9841856Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-23T09:38:02.9842751Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-23T09:38:02.9842870Z       "requiredStages": [
2026-06-23T09:38:02.9842979Z         "impl",
2026-06-23T09:38:02.9843080Z         "unit"
2026-06-23T09:38:02.9843190Z       ],
2026-06-23T09:38:02.9843294Z       "stages": {
2026-06-23T09:38:02.9843395Z         "doc": {
2026-06-23T09:38:02.9843505Z           "complete": false,
2026-06-23T09:38:02.9843613Z           "evidence": []
2026-06-23T09:38:02.9843720Z         },
2026-06-23T09:38:02.9843823Z         "impl": {
2026-06-23T09:38:02.9843938Z           "complete": true,
2026-06-23T09:38:02.9844039Z           "evidence": [
2026-06-23T09:38:02.9844143Z             {
2026-06-23T09:38:02.9844301Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9844410Z               "line": 26
2026-06-23T09:38:02.9844519Z             },
2026-06-23T09:38:02.9844762Z             {
2026-06-23T09:38:02.9844919Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9845028Z               "line": 95
2026-06-23T09:38:02.9845127Z             },
2026-06-23T09:38:02.9845236Z             {
2026-06-23T09:38:02.9845375Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9845570Z               "line": 166
2026-06-23T09:38:02.9845671Z             },
2026-06-23T09:38:02.9845770Z             {
2026-06-23T09:38:02.9845923Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T09:38:02.9846023Z               "line": 19
2026-06-23T09:38:02.9846123Z             },
2026-06-23T09:38:02.9846214Z             {
2026-06-23T09:38:02.9846362Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T09:38:02.9846461Z               "line": 50
2026-06-23T09:38:02.9846572Z             },
2026-06-23T09:38:02.9846671Z             {
2026-06-23T09:38:02.9846805Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T09:38:02.9846916Z               "line": 18
2026-06-23T09:38:02.9847005Z             },
2026-06-23T09:38:02.9847115Z             {
2026-06-23T09:38:02.9847245Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T09:38:02.9847353Z               "line": 71
2026-06-23T09:38:02.9847458Z             },
2026-06-23T09:38:02.9847555Z             {
2026-06-23T09:38:02.9847701Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.9847805Z               "line": 87
2026-06-23T09:38:02.9847910Z             }
2026-06-23T09:38:02.9848013Z           ]
2026-06-23T09:38:02.9848103Z         },
2026-06-23T09:38:02.9848213Z         "int": {
2026-06-23T09:38:02.9848323Z           "complete": false,
2026-06-23T09:38:02.9848432Z           "evidence": []
2026-06-23T09:38:02.9848533Z         },
2026-06-23T09:38:02.9848643Z         "unit": {
2026-06-23T09:38:02.9848751Z           "complete": true,
2026-06-23T09:38:02.9848857Z           "evidence": [
2026-06-23T09:38:02.9849033Z             {
2026-06-23T09:38:02.9849167Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9849276Z               "line": 289
2026-06-23T09:38:02.9849376Z             },
2026-06-23T09:38:02.9849473Z             {
2026-06-23T09:38:02.9849619Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9849725Z               "line": 314
2026-06-23T09:38:02.9849826Z             },
2026-06-23T09:38:02.9849929Z             {
2026-06-23T09:38:02.9850074Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9850179Z               "line": 350
2026-06-23T09:38:02.9850281Z             },
2026-06-23T09:38:02.9850386Z             {
2026-06-23T09:38:02.9850533Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9850636Z               "line": 418
2026-06-23T09:38:02.9850737Z             },
2026-06-23T09:38:02.9850843Z             {
2026-06-23T09:38:02.9850989Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9851086Z               "line": 429
2026-06-23T09:38:02.9851181Z             },
2026-06-23T09:38:02.9851285Z             {
2026-06-23T09:38:02.9851429Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9851524Z               "line": 460
2026-06-23T09:38:02.9851623Z             },
2026-06-23T09:38:02.9851725Z             {
2026-06-23T09:38:02.9851872Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:02.9851971Z               "line": 471
2026-06-23T09:38:02.9852073Z             },
2026-06-23T09:38:02.9852168Z             {
2026-06-23T09:38:02.9852296Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T09:38:02.9852411Z               "line": 77
2026-06-23T09:38:02.9852511Z             },
2026-06-23T09:38:02.9852616Z             {
2026-06-23T09:38:02.9852764Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T09:38:02.9852868Z               "line": 97
2026-06-23T09:38:02.9852974Z             },
2026-06-23T09:38:02.9853177Z             {
2026-06-23T09:38:02.9853320Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T09:38:02.9853426Z               "line": 112
2026-06-23T09:38:02.9853535Z             },
2026-06-23T09:38:02.9853640Z             {
2026-06-23T09:38:02.9853778Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T09:38:02.9853979Z               "line": 123
2026-06-23T09:38:02.9854084Z             },
2026-06-23T09:38:02.9854188Z             {
2026-06-23T09:38:02.9854322Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T09:38:02.9854422Z               "line": 130
2026-06-23T09:38:02.9854526Z             },
2026-06-23T09:38:02.9854628Z             {
2026-06-23T09:38:02.9854755Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-23T09:38:02.9854856Z               "line": 145
2026-06-23T09:38:02.9854966Z             },
2026-06-23T09:38:02.9855065Z             {
2026-06-23T09:38:02.9855200Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T09:38:02.9855309Z               "line": 115
2026-06-23T09:38:02.9855413Z             },
2026-06-23T09:38:02.9855517Z             {
2026-06-23T09:38:02.9855649Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T09:38:02.9855753Z               "line": 130
2026-06-23T09:38:02.9855863Z             },
2026-06-23T09:38:02.9855959Z             {
2026-06-23T09:38:02.9856091Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:02.9856202Z               "line": 428
2026-06-23T09:38:02.9856307Z             }
2026-06-23T09:38:02.9856406Z           ]
2026-06-23T09:38:02.9856508Z         }
2026-06-23T09:38:02.9856612Z       }
2026-06-23T09:38:02.9856712Z     },
2026-06-23T09:38:02.9856808Z     {
2026-06-23T09:38:02.9856955Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-23T09:38:02.9863181Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-23T09:38:02.9863375Z       "requiredStages": [
2026-06-23T09:38:02.9863587Z         "impl",
2026-06-23T09:38:02.9863695Z         "unit",
2026-06-23T09:38:02.9863799Z         "int"
2026-06-23T09:38:02.9863905Z       ],
2026-06-23T09:38:02.9864000Z       "stages": {
2026-06-23T09:38:02.9864109Z         "doc": {
2026-06-23T09:38:02.9864220Z           "complete": false,
2026-06-23T09:38:02.9864334Z           "evidence": []
2026-06-23T09:38:02.9864525Z         },
2026-06-23T09:38:02.9864630Z         "impl": {
2026-06-23T09:38:02.9864748Z           "complete": true,
2026-06-23T09:38:02.9864849Z           "evidence": [
2026-06-23T09:38:02.9864958Z             {
2026-06-23T09:38:02.9865106Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9865216Z               "line": 952
2026-06-23T09:38:02.9865320Z             },
2026-06-23T09:38:02.9865421Z             {
2026-06-23T09:38:02.9865554Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:02.9865658Z               "line": 322
2026-06-23T09:38:02.9865765Z             }
2026-06-23T09:38:02.9865869Z           ]
2026-06-23T09:38:02.9865973Z         },
2026-06-23T09:38:02.9866073Z         "int": {
2026-06-23T09:38:02.9866182Z           "complete": true,
2026-06-23T09:38:02.9866295Z           "evidence": [
2026-06-23T09:38:02.9866395Z             {
2026-06-23T09:38:02.9866571Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:02.9866680Z               "line": 2150
2026-06-23T09:38:02.9866782Z             }
2026-06-23T09:38:02.9866886Z           ]
2026-06-23T09:38:02.9866985Z         },
2026-06-23T09:38:02.9867092Z         "unit": {
2026-06-23T09:38:02.9867205Z           "complete": true,
2026-06-23T09:38:02.9867319Z           "evidence": [
2026-06-23T09:38:02.9867421Z             {
2026-06-23T09:38:02.9867558Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9867673Z               "line": 2819
2026-06-23T09:38:02.9867777Z             },
2026-06-23T09:38:02.9867877Z             {
2026-06-23T09:38:02.9868017Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9868130Z               "line": 2883
2026-06-23T09:38:02.9868235Z             },
2026-06-23T09:38:02.9868336Z             {
2026-06-23T09:38:02.9868473Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9868579Z               "line": 2938
2026-06-23T09:38:02.9868685Z             }
2026-06-23T09:38:02.9868788Z           ]
2026-06-23T09:38:02.9868891Z         }
2026-06-23T09:38:02.9869067Z       }
2026-06-23T09:38:02.9869167Z     },
2026-06-23T09:38:02.9869271Z     {
2026-06-23T09:38:02.9869410Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-23T09:38:02.9870274Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-23T09:38:02.9870387Z       "requiredStages": [
2026-06-23T09:38:02.9870492Z         "doc",
2026-06-23T09:38:02.9870598Z         "impl",
2026-06-23T09:38:02.9870702Z         "unit"
2026-06-23T09:38:02.9870802Z       ],
2026-06-23T09:38:02.9870903Z       "stages": {
2026-06-23T09:38:02.9871007Z         "doc": {
2026-06-23T09:38:02.9871122Z           "complete": true,
2026-06-23T09:38:02.9871228Z           "evidence": [
2026-06-23T09:38:02.9871336Z             {
2026-06-23T09:38:02.9871473Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9871578Z               "line": 374
2026-06-23T09:38:02.9871681Z             }
2026-06-23T09:38:02.9871785Z           ]
2026-06-23T09:38:02.9871872Z         },
2026-06-23T09:38:02.9871982Z         "impl": {
2026-06-23T09:38:02.9872085Z           "complete": true,
2026-06-23T09:38:02.9872187Z           "evidence": [
2026-06-23T09:38:02.9872282Z             {
2026-06-23T09:38:02.9872414Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9872530Z               "line": 206
2026-06-23T09:38:02.9872630Z             },
2026-06-23T09:38:02.9872845Z             {
2026-06-23T09:38:02.9872988Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9873092Z               "line": 310
2026-06-23T09:38:02.9873198Z             },
2026-06-23T09:38:02.9873297Z             {
2026-06-23T09:38:02.9873436Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9873650Z               "line": 568
2026-06-23T09:38:02.9873751Z             },
2026-06-23T09:38:02.9873856Z             {
2026-06-23T09:38:02.9873984Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9874095Z               "line": 583
2026-06-23T09:38:02.9874194Z             },
2026-06-23T09:38:02.9874297Z             {
2026-06-23T09:38:02.9874426Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9874537Z               "line": 1346
2026-06-23T09:38:02.9874635Z             },
2026-06-23T09:38:02.9874737Z             {
2026-06-23T09:38:02.9874885Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9874998Z               "line": 443
2026-06-23T09:38:02.9875099Z             },
2026-06-23T09:38:02.9875195Z             {
2026-06-23T09:38:02.9875337Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9875442Z               "line": 590
2026-06-23T09:38:02.9875543Z             },
2026-06-23T09:38:02.9875642Z             {
2026-06-23T09:38:02.9875781Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9875881Z               "line": 731
2026-06-23T09:38:02.9875981Z             }
2026-06-23T09:38:02.9876086Z           ]
2026-06-23T09:38:02.9876190Z         },
2026-06-23T09:38:02.9876295Z         "int": {
2026-06-23T09:38:02.9876401Z           "complete": false,
2026-06-23T09:38:02.9876509Z           "evidence": []
2026-06-23T09:38:02.9876613Z         },
2026-06-23T09:38:02.9876714Z         "unit": {
2026-06-23T09:38:02.9876831Z           "complete": true,
2026-06-23T09:38:02.9876935Z           "evidence": [
2026-06-23T09:38:02.9877027Z             {
2026-06-23T09:38:02.9877164Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:02.9877274Z               "line": 1155
2026-06-23T09:38:02.9877380Z             },
2026-06-23T09:38:02.9877479Z             {
2026-06-23T09:38:02.9877633Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-23T09:38:02.9877752Z               "line": 30
2026-06-23T09:38:02.9877856Z             }
2026-06-23T09:38:02.9877957Z           ]
2026-06-23T09:38:02.9878056Z         }
2026-06-23T09:38:02.9878156Z       }
2026-06-23T09:38:02.9878252Z     },
2026-06-23T09:38:02.9878356Z     {
2026-06-23T09:38:02.9878485Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-23T09:38:02.9881887Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-23T09:38:02.9882028Z       "requiredStages": [
2026-06-23T09:38:02.9882134Z         "impl",
2026-06-23T09:38:02.9882236Z         "unit",
2026-06-23T09:38:02.9882340Z         "int"
2026-06-23T09:38:02.9882446Z       ],
2026-06-23T09:38:02.9882650Z       "stages": {
2026-06-23T09:38:02.9882752Z         "doc": {
2026-06-23T09:38:02.9882856Z           "complete": false,
2026-06-23T09:38:02.9882970Z           "evidence": []
2026-06-23T09:38:02.9883062Z         },
2026-06-23T09:38:02.9883166Z         "impl": {
2026-06-23T09:38:02.9883280Z           "complete": true,
2026-06-23T09:38:02.9883386Z           "evidence": [
2026-06-23T09:38:02.9883590Z             {
2026-06-23T09:38:02.9883720Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9883834Z               "line": 780
2026-06-23T09:38:02.9883943Z             },
2026-06-23T09:38:02.9884040Z             {
2026-06-23T09:38:02.9884172Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9884277Z               "line": 968
2026-06-23T09:38:02.9884378Z             }
2026-06-23T09:38:02.9884482Z           ]
2026-06-23T09:38:02.9884577Z         },
2026-06-23T09:38:02.9884683Z         "int": {
2026-06-23T09:38:02.9884796Z           "complete": true,
2026-06-23T09:38:02.9884919Z           "evidence": [
2026-06-23T09:38:02.9885015Z             {
2026-06-23T09:38:02.9885168Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:02.9885282Z               "line": 424
2026-06-23T09:38:02.9885369Z             }
2026-06-23T09:38:02.9885473Z           ]
2026-06-23T09:38:02.9885577Z         },
2026-06-23T09:38:02.9885688Z         "unit": {
2026-06-23T09:38:02.9885802Z           "complete": true,
2026-06-23T09:38:02.9885916Z           "evidence": [
2026-06-23T09:38:02.9886017Z             {
2026-06-23T09:38:02.9886145Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9886251Z               "line": 1153
2026-06-23T09:38:02.9886355Z             },
2026-06-23T09:38:02.9886460Z             {
2026-06-23T09:38:02.9886589Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9886703Z               "line": 1177
2026-06-23T09:38:02.9886807Z             }
2026-06-23T09:38:02.9886909Z           ]
2026-06-23T09:38:02.9887017Z         }
2026-06-23T09:38:02.9887122Z       }
2026-06-23T09:38:02.9887226Z     },
2026-06-23T09:38:02.9887330Z     {
2026-06-23T09:38:02.9887476Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-23T09:38:02.9891326Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-23T09:38:02.9891455Z       "requiredStages": [
2026-06-23T09:38:02.9891564Z         "impl",
2026-06-23T09:38:02.9891670Z         "unit",
2026-06-23T09:38:02.9891775Z         "int"
2026-06-23T09:38:02.9891870Z       ],
2026-06-23T09:38:02.9891970Z       "stages": {
2026-06-23T09:38:02.9892076Z         "doc": {
2026-06-23T09:38:02.9892179Z           "complete": false,
2026-06-23T09:38:02.9892386Z           "evidence": []
2026-06-23T09:38:02.9892484Z         },
2026-06-23T09:38:02.9892593Z         "impl": {
2026-06-23T09:38:02.9892708Z           "complete": true,
2026-06-23T09:38:02.9892815Z           "evidence": [
2026-06-23T09:38:02.9892929Z             {
2026-06-23T09:38:02.9893059Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9893268Z               "line": 1769
2026-06-23T09:38:02.9893369Z             },
2026-06-23T09:38:02.9893468Z             {
2026-06-23T09:38:02.9893597Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9893712Z               "line": 1790
2026-06-23T09:38:02.9893821Z             }
2026-06-23T09:38:02.9893922Z           ]
2026-06-23T09:38:02.9894027Z         },
2026-06-23T09:38:02.9894131Z         "int": {
2026-06-23T09:38:02.9894246Z           "complete": true,
2026-06-23T09:38:02.9894356Z           "evidence": [
2026-06-23T09:38:02.9894460Z             {
2026-06-23T09:38:02.9894619Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-23T09:38:02.9894737Z               "line": 330
2026-06-23T09:38:02.9894842Z             }
2026-06-23T09:38:02.9894934Z           ]
2026-06-23T09:38:02.9895042Z         },
2026-06-23T09:38:02.9895133Z         "unit": {
2026-06-23T09:38:02.9895244Z           "complete": true,
2026-06-23T09:38:02.9895356Z           "evidence": [
2026-06-23T09:38:02.9895460Z             {
2026-06-23T09:38:02.9895595Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9895699Z               "line": 9563
2026-06-23T09:38:02.9895809Z             }
2026-06-23T09:38:02.9895905Z           ]
2026-06-23T09:38:02.9896014Z         }
2026-06-23T09:38:02.9896118Z       }
2026-06-23T09:38:02.9896205Z     },
2026-06-23T09:38:02.9896310Z     {
2026-06-23T09:38:02.9896428Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-23T09:38:02.9900365Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-23T09:38:02.9900525Z       "requiredStages": [
2026-06-23T09:38:02.9900625Z         "impl",
2026-06-23T09:38:02.9900730Z         "unit"
2026-06-23T09:38:02.9900837Z       ],
2026-06-23T09:38:02.9900942Z       "stages": {
2026-06-23T09:38:02.9901052Z         "doc": {
2026-06-23T09:38:02.9901166Z           "complete": false,
2026-06-23T09:38:02.9901266Z           "evidence": []
2026-06-23T09:38:02.9901372Z         },
2026-06-23T09:38:02.9901467Z         "impl": {
2026-06-23T09:38:02.9901586Z           "complete": true,
2026-06-23T09:38:02.9901691Z           "evidence": [
2026-06-23T09:38:02.9901805Z             {
2026-06-23T09:38:02.9901920Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9902034Z               "line": 991
2026-06-23T09:38:02.9902134Z             }
2026-06-23T09:38:02.9902240Z           ]
2026-06-23T09:38:02.9902449Z         },
2026-06-23T09:38:02.9902555Z         "int": {
2026-06-23T09:38:02.9902669Z           "complete": false,
2026-06-23T09:38:02.9902773Z           "evidence": []
2026-06-23T09:38:02.9902879Z         },
2026-06-23T09:38:02.9902998Z         "unit": {
2026-06-23T09:38:02.9903101Z           "complete": true,
2026-06-23T09:38:02.9903211Z           "evidence": [
2026-06-23T09:38:02.9903409Z             {
2026-06-23T09:38:02.9903542Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9903648Z               "line": 1193
2026-06-23T09:38:02.9903757Z             }
2026-06-23T09:38:02.9903862Z           ]
2026-06-23T09:38:02.9903972Z         }
2026-06-23T09:38:02.9904076Z       }
2026-06-23T09:38:02.9904177Z     },
2026-06-23T09:38:02.9904282Z     {
2026-06-23T09:38:02.9904424Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-23T09:38:02.9908931Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-23T09:38:02.9909188Z       "requiredStages": [
2026-06-23T09:38:02.9909294Z         "impl",
2026-06-23T09:38:02.9909399Z         "unit"
2026-06-23T09:38:02.9909498Z       ],
2026-06-23T09:38:02.9909609Z       "stages": {
2026-06-23T09:38:02.9909713Z         "doc": {
2026-06-23T09:38:02.9909813Z           "complete": false,
2026-06-23T09:38:02.9909923Z           "evidence": []
2026-06-23T09:38:02.9910023Z         },
2026-06-23T09:38:02.9910133Z         "impl": {
2026-06-23T09:38:02.9910233Z           "complete": true,
2026-06-23T09:38:02.9910343Z           "evidence": [
2026-06-23T09:38:02.9910443Z             {
2026-06-23T09:38:02.9910582Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9910686Z               "line": 264
2026-06-23T09:38:02.9910786Z             }
2026-06-23T09:38:02.9910892Z           ]
2026-06-23T09:38:02.9910982Z         },
2026-06-23T09:38:02.9911090Z         "int": {
2026-06-23T09:38:02.9911199Z           "complete": false,
2026-06-23T09:38:02.9911308Z           "evidence": []
2026-06-23T09:38:02.9911411Z         },
2026-06-23T09:38:02.9911517Z         "unit": {
2026-06-23T09:38:02.9911622Z           "complete": true,
2026-06-23T09:38:02.9911731Z           "evidence": [
2026-06-23T09:38:02.9911836Z             {
2026-06-23T09:38:02.9911960Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9912064Z               "line": 1175
2026-06-23T09:38:02.9912171Z             },
2026-06-23T09:38:02.9912275Z             {
2026-06-23T09:38:02.9912393Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9912495Z               "line": 1306
2026-06-23T09:38:02.9912727Z             },
2026-06-23T09:38:02.9912824Z             {
2026-06-23T09:38:02.9912947Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:02.9913057Z               "line": 1308
2026-06-23T09:38:02.9913158Z             }
2026-06-23T09:38:02.9913262Z           ]
2026-06-23T09:38:02.9913362Z         }
2026-06-23T09:38:02.9913468Z       }
2026-06-23T09:38:02.9913657Z     },
2026-06-23T09:38:02.9913752Z     {
2026-06-23T09:38:02.9913889Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-23T09:38:02.9914165Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-23T09:38:02.9914279Z       "requiredStages": [
2026-06-23T09:38:02.9914384Z         "impl",
2026-06-23T09:38:02.9914494Z         "unit"
2026-06-23T09:38:02.9914593Z       ],
2026-06-23T09:38:02.9914698Z       "stages": {
2026-06-23T09:38:02.9914804Z         "doc": {
2026-06-23T09:38:02.9914917Z           "complete": true,
2026-06-23T09:38:02.9915033Z           "evidence": [
2026-06-23T09:38:02.9915137Z             {
2026-06-23T09:38:02.9915280Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9915391Z               "line": 139
2026-06-23T09:38:02.9915490Z             }
2026-06-23T09:38:02.9915595Z           ]
2026-06-23T09:38:02.9915691Z         },
2026-06-23T09:38:02.9915800Z         "impl": {
2026-06-23T09:38:02.9915904Z           "complete": true,
2026-06-23T09:38:02.9916015Z           "evidence": [
2026-06-23T09:38:02.9916119Z             {
2026-06-23T09:38:02.9916253Z               "path": "crates/spt-store/src/db.rs",
2026-06-23T09:38:02.9916369Z               "line": 29
2026-06-23T09:38:02.9916471Z             },
2026-06-23T09:38:02.9916576Z             {
2026-06-23T09:38:02.9916710Z               "path": "crates/spt-store/src/db.rs",
2026-06-23T09:38:02.9916829Z               "line": 67
2026-06-23T09:38:02.9916938Z             },
2026-06-23T09:38:02.9917039Z             {
2026-06-23T09:38:02.9917186Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:02.9917302Z               "line": 101
2026-06-23T09:38:02.9917406Z             },
2026-06-23T09:38:02.9917501Z             {
2026-06-23T09:38:02.9917641Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9917759Z               "line": 30
2026-06-23T09:38:02.9917859Z             },
2026-06-23T09:38:02.9917970Z             {
2026-06-23T09:38:02.9918107Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9918217Z               "line": 48
2026-06-23T09:38:02.9918313Z             }
2026-06-23T09:38:02.9918421Z           ]
2026-06-23T09:38:02.9918526Z         },
2026-06-23T09:38:02.9918628Z         "int": {
2026-06-23T09:38:02.9918750Z           "complete": false,
2026-06-23T09:38:02.9918859Z           "evidence": []
2026-06-23T09:38:02.9919038Z         },
2026-06-23T09:38:02.9919142Z         "unit": {
2026-06-23T09:38:02.9919262Z           "complete": true,
2026-06-23T09:38:02.9919377Z           "evidence": [
2026-06-23T09:38:02.9919476Z             {
2026-06-23T09:38:02.9919630Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9919739Z               "line": 162
2026-06-23T09:38:02.9919839Z             }
2026-06-23T09:38:02.9919940Z           ]
2026-06-23T09:38:02.9920029Z         }
2026-06-23T09:38:02.9920130Z       }
2026-06-23T09:38:02.9920231Z     },
2026-06-23T09:38:02.9920344Z     {
2026-06-23T09:38:02.9920464Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-23T09:38:02.9920870Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-23T09:38:02.9920988Z       "requiredStages": [
2026-06-23T09:38:02.9921089Z         "doc",
2026-06-23T09:38:02.9921199Z         "impl",
2026-06-23T09:38:02.9921293Z         "unit"
2026-06-23T09:38:02.9921404Z       ],
2026-06-23T09:38:02.9921509Z       "stages": {
2026-06-23T09:38:02.9921617Z         "doc": {
2026-06-23T09:38:02.9921731Z           "complete": true,
2026-06-23T09:38:02.9921958Z           "evidence": [
2026-06-23T09:38:02.9922057Z             {
2026-06-23T09:38:02.9922187Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9922301Z               "line": 151
2026-06-23T09:38:02.9922396Z             }
2026-06-23T09:38:02.9922502Z           ]
2026-06-23T09:38:02.9922606Z         },
2026-06-23T09:38:02.9922706Z         "impl": {
2026-06-23T09:38:02.9922925Z           "complete": true,
2026-06-23T09:38:02.9923035Z           "evidence": [
2026-06-23T09:38:02.9923145Z             {
2026-06-23T09:38:02.9923287Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9923394Z               "line": 22
2026-06-23T09:38:02.9923488Z             }
2026-06-23T09:38:02.9923593Z           ]
2026-06-23T09:38:02.9923699Z         },
2026-06-23T09:38:02.9923799Z         "int": {
2026-06-23T09:38:02.9923908Z           "complete": false,
2026-06-23T09:38:02.9924019Z           "evidence": []
2026-06-23T09:38:02.9924128Z         },
2026-06-23T09:38:02.9924226Z         "unit": {
2026-06-23T09:38:02.9924350Z           "complete": true,
2026-06-23T09:38:02.9924454Z           "evidence": [
2026-06-23T09:38:02.9924557Z             {
2026-06-23T09:38:02.9924701Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9924806Z               "line": 298
2026-06-23T09:38:02.9924910Z             }
2026-06-23T09:38:02.9925021Z           ]
2026-06-23T09:38:02.9925117Z         }
2026-06-23T09:38:02.9925210Z       }
2026-06-23T09:38:02.9925312Z     },
2026-06-23T09:38:02.9925416Z     {
2026-06-23T09:38:02.9925559Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-23T09:38:02.9926041Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-23T09:38:02.9926164Z       "requiredStages": [
2026-06-23T09:38:02.9926275Z         "impl",
2026-06-23T09:38:02.9926388Z         "unit"
2026-06-23T09:38:02.9926489Z       ],
2026-06-23T09:38:02.9926595Z       "stages": {
2026-06-23T09:38:02.9926689Z         "doc": {
2026-06-23T09:38:02.9926808Z           "complete": true,
2026-06-23T09:38:02.9926905Z           "evidence": [
2026-06-23T09:38:02.9927009Z             {
2026-06-23T09:38:02.9927145Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9927256Z               "line": 145
2026-06-23T09:38:02.9927365Z             }
2026-06-23T09:38:02.9927460Z           ]
2026-06-23T09:38:02.9927571Z         },
2026-06-23T09:38:02.9927676Z         "impl": {
2026-06-23T09:38:02.9927798Z           "complete": true,
2026-06-23T09:38:02.9927905Z           "evidence": [
2026-06-23T09:38:02.9928009Z             {
2026-06-23T09:38:02.9928171Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-23T09:38:02.9928276Z               "line": 160
2026-06-23T09:38:02.9928375Z             },
2026-06-23T09:38:02.9928477Z             {
2026-06-23T09:38:02.9928629Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9928738Z               "line": 200
2026-06-23T09:38:02.9928845Z             },
2026-06-23T09:38:02.9929034Z             {
2026-06-23T09:38:02.9929179Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:02.9929291Z               "line": 298
2026-06-23T09:38:02.9929386Z             },
2026-06-23T09:38:02.9929491Z             {
2026-06-23T09:38:02.9929632Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-23T09:38:02.9929746Z               "line": 20
2026-06-23T09:38:02.9929852Z             }
2026-06-23T09:38:02.9929956Z           ]
2026-06-23T09:38:02.9930056Z         },
2026-06-23T09:38:02.9930161Z         "int": {
2026-06-23T09:38:02.9930280Z           "complete": false,
2026-06-23T09:38:02.9930375Z           "evidence": []
2026-06-23T09:38:02.9930476Z         },
2026-06-23T09:38:02.9930585Z         "unit": {
2026-06-23T09:38:02.9930685Z           "complete": true,
2026-06-23T09:38:02.9930809Z           "evidence": [
2026-06-23T09:38:02.9930909Z             {
2026-06-23T09:38:02.9931073Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9931272Z               "line": 937
2026-06-23T09:38:02.9931373Z             },
2026-06-23T09:38:02.9931481Z             {
2026-06-23T09:38:02.9931624Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-23T09:38:02.9931745Z               "line": 88
2026-06-23T09:38:02.9931853Z             },
2026-06-23T09:38:02.9932050Z             {
2026-06-23T09:38:02.9932196Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:02.9932305Z               "line": 851
2026-06-23T09:38:02.9932414Z             },
2026-06-23T09:38:02.9932513Z             {
2026-06-23T09:38:02.9932666Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:02.9932781Z               "line": 870
2026-06-23T09:38:02.9932884Z             },
2026-06-23T09:38:02.9932986Z             {
2026-06-23T09:38:02.9933138Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:02.9933247Z               "line": 279
2026-06-23T09:38:02.9933358Z             },
2026-06-23T09:38:02.9933467Z             {
2026-06-23T09:38:02.9933610Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-23T09:38:02.9933710Z               "line": 82
2026-06-23T09:38:02.9933815Z             },
2026-06-23T09:38:02.9933920Z             {
2026-06-23T09:38:02.9934063Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-23T09:38:02.9934167Z               "line": 99
2026-06-23T09:38:02.9934274Z             },
2026-06-23T09:38:02.9934382Z             {
2026-06-23T09:38:02.9934521Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-23T09:38:02.9934622Z               "line": 119
2026-06-23T09:38:02.9934725Z             }
2026-06-23T09:38:02.9934829Z           ]
2026-06-23T09:38:02.9934920Z         }
2026-06-23T09:38:02.9935028Z       }
2026-06-23T09:38:02.9935132Z     },
2026-06-23T09:38:02.9935232Z     {
2026-06-23T09:38:02.9935366Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-23T09:38:02.9936687Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-23T09:38:02.9936817Z       "requiredStages": [
2026-06-23T09:38:02.9936920Z         "doc",
2026-06-23T09:38:02.9937025Z         "impl",
2026-06-23T09:38:02.9939786Z         "unit"
2026-06-23T09:38:02.9939913Z       ],
2026-06-23T09:38:02.9940032Z       "stages": {
2026-06-23T09:38:02.9940135Z         "doc": {
2026-06-23T09:38:02.9940258Z           "complete": true,
2026-06-23T09:38:02.9940373Z           "evidence": [
2026-06-23T09:38:02.9940478Z             {
2026-06-23T09:38:02.9940606Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9940721Z               "line": 157
2026-06-23T09:38:02.9940826Z             }
2026-06-23T09:38:02.9940925Z           ]
2026-06-23T09:38:02.9941027Z         },
2026-06-23T09:38:02.9941140Z         "impl": {
2026-06-23T09:38:02.9941250Z           "complete": true,
2026-06-23T09:38:02.9941360Z           "evidence": [
2026-06-23T09:38:02.9941460Z             {
2026-06-23T09:38:02.9941633Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T09:38:02.9941741Z               "line": 137
2026-06-23T09:38:02.9941846Z             },
2026-06-23T09:38:02.9941952Z             {
2026-06-23T09:38:02.9942104Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9942214Z               "line": 564
2026-06-23T09:38:02.9942314Z             },
2026-06-23T09:38:02.9942418Z             {
2026-06-23T09:38:02.9942572Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9942676Z               "line": 571
2026-06-23T09:38:02.9942780Z             },
2026-06-23T09:38:02.9943016Z             {
2026-06-23T09:38:02.9943173Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:02.9943279Z               "line": 227
2026-06-23T09:38:02.9943383Z             }
2026-06-23T09:38:02.9943483Z           ]
2026-06-23T09:38:02.9943593Z         },
2026-06-23T09:38:02.9943702Z         "int": {
2026-06-23T09:38:02.9943822Z           "complete": false,
2026-06-23T09:38:02.9944031Z           "evidence": []
2026-06-23T09:38:02.9944132Z         },
2026-06-23T09:38:02.9944242Z         "unit": {
2026-06-23T09:38:02.9944346Z           "complete": true,
2026-06-23T09:38:02.9944456Z           "evidence": [
2026-06-23T09:38:02.9944561Z             {
2026-06-23T09:38:02.9944704Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9944820Z               "line": 1622
2026-06-23T09:38:02.9944923Z             },
2026-06-23T09:38:02.9945028Z             {
2026-06-23T09:38:02.9945168Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9945285Z               "line": 1680
2026-06-23T09:38:02.9945384Z             },
2026-06-23T09:38:02.9945485Z             {
2026-06-23T09:38:02.9945631Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:02.9945725Z               "line": 883
2026-06-23T09:38:02.9945831Z             }
2026-06-23T09:38:02.9945931Z           ]
2026-06-23T09:38:02.9946035Z         }
2026-06-23T09:38:02.9946141Z       }
2026-06-23T09:38:02.9946241Z     },
2026-06-23T09:38:02.9946335Z     {
2026-06-23T09:38:02.9946479Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-23T09:38:02.9946694Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-23T09:38:02.9946804Z       "requiredStages": [
2026-06-23T09:38:02.9946904Z         "impl",
2026-06-23T09:38:02.9947008Z         "unit"
2026-06-23T09:38:02.9947109Z       ],
2026-06-23T09:38:02.9947218Z       "stages": {
2026-06-23T09:38:02.9947323Z         "doc": {
2026-06-23T09:38:02.9947443Z           "complete": false,
2026-06-23T09:38:02.9947542Z           "evidence": []
2026-06-23T09:38:02.9947648Z         },
2026-06-23T09:38:02.9947749Z         "impl": {
2026-06-23T09:38:02.9947856Z           "complete": true,
2026-06-23T09:38:02.9947968Z           "evidence": [
2026-06-23T09:38:02.9948068Z             {
2026-06-23T09:38:02.9948209Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:02.9948333Z               "line": 15
2026-06-23T09:38:02.9948429Z             },
2026-06-23T09:38:02.9948533Z             {
2026-06-23T09:38:02.9948681Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9948787Z               "line": 55
2026-06-23T09:38:02.9948885Z             },
2026-06-23T09:38:02.9949049Z             {
2026-06-23T09:38:02.9949200Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9949306Z               "line": 66
2026-06-23T09:38:02.9949415Z             },
2026-06-23T09:38:02.9949515Z             {
2026-06-23T09:38:02.9949655Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9949763Z               "line": 115
2026-06-23T09:38:02.9949873Z             },
2026-06-23T09:38:02.9949984Z             {
2026-06-23T09:38:02.9950126Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9950231Z               "line": 138
2026-06-23T09:38:02.9950336Z             }
2026-06-23T09:38:02.9950439Z           ]
2026-06-23T09:38:02.9950539Z         },
2026-06-23T09:38:02.9950645Z         "int": {
2026-06-23T09:38:02.9950761Z           "complete": false,
2026-06-23T09:38:02.9950871Z           "evidence": []
2026-06-23T09:38:02.9950976Z         },
2026-06-23T09:38:02.9951076Z         "unit": {
2026-06-23T09:38:02.9951195Z           "complete": true,
2026-06-23T09:38:02.9951296Z           "evidence": [
2026-06-23T09:38:02.9951400Z             {
2026-06-23T09:38:02.9951544Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:02.9951653Z               "line": 363
2026-06-23T09:38:02.9951883Z             },
2026-06-23T09:38:02.9951977Z             {
2026-06-23T09:38:02.9952111Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:02.9952217Z               "line": 369
2026-06-23T09:38:02.9952321Z             },
2026-06-23T09:38:02.9952425Z             {
2026-06-23T09:38:02.9952551Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:02.9952750Z               "line": 383
2026-06-23T09:38:02.9952851Z             },
2026-06-23T09:38:02.9952949Z             {
2026-06-23T09:38:02.9953074Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:02.9953185Z               "line": 392
2026-06-23T09:38:02.9953288Z             },
2026-06-23T09:38:02.9953387Z             {
2026-06-23T09:38:02.9953530Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9953638Z               "line": 195
2026-06-23T09:38:02.9953738Z             },
2026-06-23T09:38:02.9953839Z             {
2026-06-23T09:38:02.9953971Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9954077Z               "line": 208
2026-06-23T09:38:02.9954177Z             },
2026-06-23T09:38:02.9954276Z             {
2026-06-23T09:38:02.9954406Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9954516Z               "line": 271
2026-06-23T09:38:02.9954615Z             },
2026-06-23T09:38:02.9954711Z             {
2026-06-23T09:38:02.9954849Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9954954Z               "line": 290
2026-06-23T09:38:02.9955065Z             },
2026-06-23T09:38:02.9955168Z             {
2026-06-23T09:38:02.9955297Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:02.9955408Z               "line": 319
2026-06-23T09:38:02.9955497Z             }
2026-06-23T09:38:02.9955598Z           ]
2026-06-23T09:38:02.9955704Z         }
2026-06-23T09:38:02.9955812Z       }
2026-06-23T09:38:02.9955911Z     },
2026-06-23T09:38:02.9956016Z     {
2026-06-23T09:38:02.9956153Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-23T09:38:02.9956454Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-23T09:38:02.9956562Z       "requiredStages": [
2026-06-23T09:38:02.9956653Z         "impl",
2026-06-23T09:38:02.9956758Z         "unit",
2026-06-23T09:38:02.9956858Z         "int"
2026-06-23T09:38:02.9956968Z       ],
2026-06-23T09:38:02.9957068Z       "stages": {
2026-06-23T09:38:02.9957168Z         "doc": {
2026-06-23T09:38:02.9957288Z           "complete": false,
2026-06-23T09:38:02.9957397Z           "evidence": []
2026-06-23T09:38:02.9957501Z         },
2026-06-23T09:38:02.9957607Z         "impl": {
2026-06-23T09:38:02.9957721Z           "complete": true,
2026-06-23T09:38:02.9957864Z           "evidence": [
2026-06-23T09:38:02.9957970Z             {
2026-06-23T09:38:02.9958117Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9958247Z               "line": 480
2026-06-23T09:38:02.9958374Z             },
2026-06-23T09:38:02.9958475Z             {
2026-06-23T09:38:02.9958609Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9958731Z               "line": 1038
2026-06-23T09:38:02.9958831Z             },
2026-06-23T09:38:02.9958931Z             {
2026-06-23T09:38:02.9959160Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9959275Z               "line": 1083
2026-06-23T09:38:02.9959375Z             },
2026-06-23T09:38:02.9959474Z             {
2026-06-23T09:38:02.9959614Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:02.9959723Z               "line": 1108
2026-06-23T09:38:02.9959823Z             },
2026-06-23T09:38:02.9959923Z             {
2026-06-23T09:38:02.9960066Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9960167Z               "line": 1777
2026-06-23T09:38:02.9960276Z             },
2026-06-23T09:38:02.9960381Z             {
2026-06-23T09:38:02.9960515Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9960733Z               "line": 2022
2026-06-23T09:38:02.9960835Z             },
2026-06-23T09:38:02.9960938Z             {
2026-06-23T09:38:02.9961071Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9961176Z               "line": 2153
2026-06-23T09:38:02.9961279Z             },
2026-06-23T09:38:02.9961474Z             {
2026-06-23T09:38:02.9961608Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:02.9961717Z               "line": 2201
2026-06-23T09:38:02.9961823Z             },
2026-06-23T09:38:02.9961923Z             {
2026-06-23T09:38:02.9962070Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9962176Z               "line": 46
2026-06-23T09:38:02.9962270Z             },
2026-06-23T09:38:02.9962375Z             {
2026-06-23T09:38:02.9962514Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9962623Z               "line": 200
2026-06-23T09:38:02.9962729Z             },
2026-06-23T09:38:02.9962833Z             {
2026-06-23T09:38:02.9962966Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T09:38:02.9963072Z               "line": 132
2026-06-23T09:38:02.9963176Z             },
2026-06-23T09:38:02.9963286Z             {
2026-06-23T09:38:02.9963430Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9963533Z               "line": 137
2026-06-23T09:38:02.9963639Z             },
2026-06-23T09:38:02.9963745Z             {
2026-06-23T09:38:02.9963881Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9963996Z               "line": 183
2026-06-23T09:38:02.9964095Z             }
2026-06-23T09:38:02.9964188Z           ]
2026-06-23T09:38:02.9964288Z         },
2026-06-23T09:38:02.9964390Z         "int": {
2026-06-23T09:38:02.9964513Z           "complete": true,
2026-06-23T09:38:02.9964622Z           "evidence": [
2026-06-23T09:38:02.9964728Z             {
2026-06-23T09:38:02.9964870Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-23T09:38:02.9964986Z               "line": 27
2026-06-23T09:38:02.9965095Z             },
2026-06-23T09:38:02.9965199Z             {
2026-06-23T09:38:02.9965348Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-23T09:38:02.9965457Z               "line": 148
2026-06-23T09:38:02.9965561Z             },
2026-06-23T09:38:02.9965659Z             {
2026-06-23T09:38:02.9965800Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-23T09:38:02.9965911Z               "line": 200
2026-06-23T09:38:02.9966006Z             }
2026-06-23T09:38:02.9966110Z           ]
2026-06-23T09:38:02.9966226Z         },
2026-06-23T09:38:02.9966335Z         "unit": {
2026-06-23T09:38:02.9966443Z           "complete": true,
2026-06-23T09:38:02.9966557Z           "evidence": [
2026-06-23T09:38:02.9966652Z             {
2026-06-23T09:38:02.9966798Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9966913Z               "line": 366
2026-06-23T09:38:02.9967014Z             },
2026-06-23T09:38:02.9967122Z             {
2026-06-23T09:38:02.9967257Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9967366Z               "line": 398
2026-06-23T09:38:02.9967475Z             },
2026-06-23T09:38:02.9967581Z             {
2026-06-23T09:38:02.9967723Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-23T09:38:02.9967833Z               "line": 419
2026-06-23T09:38:02.9967933Z             },
2026-06-23T09:38:02.9968033Z             {
2026-06-23T09:38:02.9968182Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:02.9968291Z               "line": 637
2026-06-23T09:38:02.9968396Z             },
2026-06-23T09:38:02.9968502Z             {
2026-06-23T09:38:02.9968643Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-23T09:38:02.9968748Z               "line": 289
2026-06-23T09:38:02.9968850Z             },
2026-06-23T09:38:02.9969035Z             {
2026-06-23T09:38:02.9969286Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-23T09:38:02.9969395Z               "line": 230
2026-06-23T09:38:02.9969501Z             },
2026-06-23T09:38:02.9969601Z             {
2026-06-23T09:38:02.9969734Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9969845Z               "line": 526
2026-06-23T09:38:02.9970039Z             },
2026-06-23T09:38:02.9970145Z             {
2026-06-23T09:38:02.9970273Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:02.9970378Z               "line": 556
2026-06-23T09:38:02.9970474Z             }
2026-06-23T09:38:02.9970579Z           ]
2026-06-23T09:38:02.9970669Z         }
2026-06-23T09:38:02.9970765Z       }
2026-06-23T09:38:02.9970860Z     },
2026-06-23T09:38:02.9970950Z     {
2026-06-23T09:38:02.9971099Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-23T09:38:02.9972859Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-23T09:38:02.9972993Z       "requiredStages": [
2026-06-23T09:38:02.9973097Z         "doc",
2026-06-23T09:38:02.9973202Z         "impl",
2026-06-23T09:38:02.9973308Z         "unit"
2026-06-23T09:38:02.9973412Z       ],
2026-06-23T09:38:02.9973521Z       "stages": {
2026-06-23T09:38:02.9973618Z         "doc": {
2026-06-23T09:38:02.9973722Z           "complete": true,
2026-06-23T09:38:02.9973831Z           "evidence": [
2026-06-23T09:38:02.9973929Z             {
2026-06-23T09:38:02.9974065Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:02.9974180Z               "line": 314
2026-06-23T09:38:02.9974281Z             }
2026-06-23T09:38:02.9974390Z           ]
2026-06-23T09:38:02.9974479Z         },
2026-06-23T09:38:02.9974584Z         "impl": {
2026-06-23T09:38:02.9974688Z           "complete": true,
2026-06-23T09:38:02.9974801Z           "evidence": [
2026-06-23T09:38:02.9974901Z             {
2026-06-23T09:38:02.9975082Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-23T09:38:02.9975197Z               "line": 33
2026-06-23T09:38:02.9975297Z             },
2026-06-23T09:38:02.9975392Z             {
2026-06-23T09:38:02.9975541Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-23T09:38:02.9975645Z               "line": 39
2026-06-23T09:38:02.9975749Z             }
2026-06-23T09:38:02.9975860Z           ]
2026-06-23T09:38:02.9975993Z         },
2026-06-23T09:38:02.9976103Z         "int": {
2026-06-23T09:38:02.9976223Z           "complete": false,
2026-06-23T09:38:02.9976326Z           "evidence": []
2026-06-23T09:38:02.9976437Z         },
2026-06-23T09:38:02.9976543Z         "unit": {
2026-06-23T09:38:02.9976651Z           "complete": true,
2026-06-23T09:38:02.9976761Z           "evidence": [
2026-06-23T09:38:02.9976858Z             {
2026-06-23T09:38:02.9977022Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-23T09:38:02.9977127Z               "line": 95
2026-06-23T09:38:02.9977236Z             }
2026-06-23T09:38:02.9977330Z           ]
2026-06-23T09:38:02.9977425Z         }
2026-06-23T09:38:02.9977531Z       }
2026-06-23T09:38:02.9977625Z     },
2026-06-23T09:38:02.9977720Z     {
2026-06-23T09:38:02.9977845Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-23T09:38:02.9980415Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-23T09:38:02.9980762Z       "requiredStages": [
2026-06-23T09:38:02.9980871Z         "impl",
2026-06-23T09:38:02.9980967Z         "unit"
2026-06-23T09:38:02.9981063Z       ],
2026-06-23T09:38:02.9981172Z       "stages": {
2026-06-23T09:38:02.9981272Z         "doc": {
2026-06-23T09:38:02.9981382Z           "complete": false,
2026-06-23T09:38:02.9981491Z           "evidence": []
2026-06-23T09:38:02.9981587Z         },
2026-06-23T09:38:02.9981702Z         "impl": {
2026-06-23T09:38:02.9981816Z           "complete": true,
2026-06-23T09:38:02.9981921Z           "evidence": [
2026-06-23T09:38:02.9982026Z             {
2026-06-23T09:38:02.9982182Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9982296Z               "line": 488
2026-06-23T09:38:02.9982399Z             }
2026-06-23T09:38:02.9982508Z           ]
2026-06-23T09:38:02.9982618Z         },
2026-06-23T09:38:02.9982723Z         "int": {
2026-06-23T09:38:02.9982847Z           "complete": false,
2026-06-23T09:38:02.9982958Z           "evidence": []
2026-06-23T09:38:02.9983067Z         },
2026-06-23T09:38:02.9983171Z         "unit": {
2026-06-23T09:38:02.9983287Z           "complete": true,
2026-06-23T09:38:02.9983386Z           "evidence": [
2026-06-23T09:38:02.9983496Z             {
2026-06-23T09:38:02.9983649Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:02.9983757Z               "line": 1466
2026-06-23T09:38:02.9983859Z             }
2026-06-23T09:38:02.9983958Z           ]
2026-06-23T09:38:02.9984068Z         }
2026-06-23T09:38:02.9984174Z       }
2026-06-23T09:38:02.9984268Z     },
2026-06-23T09:38:02.9984373Z     {
2026-06-23T09:38:02.9984503Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-23T09:38:02.9986682Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-23T09:38:02.9986817Z       "requiredStages": [
2026-06-23T09:38:02.9986916Z         "unit"
2026-06-23T09:38:02.9987021Z       ],
2026-06-23T09:38:02.9987127Z       "stages": {
2026-06-23T09:38:02.9987225Z         "doc": {
2026-06-23T09:38:02.9987336Z           "complete": false,
2026-06-23T09:38:02.9987446Z           "evidence": []
2026-06-23T09:38:02.9987554Z         },
2026-06-23T09:38:02.9987658Z         "impl": {
2026-06-23T09:38:02.9987773Z           "complete": true,
2026-06-23T09:38:02.9987880Z           "evidence": [
2026-06-23T09:38:02.9987990Z             {
2026-06-23T09:38:02.9988130Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9988233Z               "line": 4175
2026-06-23T09:38:02.9988338Z             },
2026-06-23T09:38:02.9988434Z             {
2026-06-23T09:38:02.9988557Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9988668Z               "line": 4227
2026-06-23T09:38:02.9988767Z             },
2026-06-23T09:38:02.9988876Z             {
2026-06-23T09:38:02.9989172Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:02.9989273Z               "line": 4272
2026-06-23T09:38:02.9989378Z             },
2026-06-23T09:38:02.9989482Z             {
2026-06-23T09:38:02.9989612Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9989716Z               "line": 92
2026-06-23T09:38:02.9989821Z             },
2026-06-23T09:38:02.9990013Z             {
2026-06-23T09:38:02.9990155Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9990261Z               "line": 148
2026-06-23T09:38:02.9990369Z             },
2026-06-23T09:38:02.9990473Z             {
2026-06-23T09:38:02.9990598Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9990712Z               "line": 192
2026-06-23T09:38:02.9990816Z             },
2026-06-23T09:38:02.9990922Z             {
2026-06-23T09:38:02.9991050Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9991164Z               "line": 200
2026-06-23T09:38:02.9991270Z             },
2026-06-23T09:38:02.9991379Z             {
2026-06-23T09:38:02.9991508Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9991608Z               "line": 211
2026-06-23T09:38:02.9991722Z             },
2026-06-23T09:38:02.9991828Z             {
2026-06-23T09:38:02.9991961Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9992075Z               "line": 265
2026-06-23T09:38:02.9992172Z             },
2026-06-23T09:38:02.9992276Z             {
2026-06-23T09:38:02.9992409Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9992521Z               "line": 279
2026-06-23T09:38:02.9992618Z             }
2026-06-23T09:38:02.9992713Z           ]
2026-06-23T09:38:02.9992804Z         },
2026-06-23T09:38:02.9992913Z         "int": {
2026-06-23T09:38:02.9993035Z           "complete": false,
2026-06-23T09:38:02.9993145Z           "evidence": []
2026-06-23T09:38:02.9993256Z         },
2026-06-23T09:38:02.9993359Z         "unit": {
2026-06-23T09:38:02.9993489Z           "complete": true,
2026-06-23T09:38:02.9993593Z           "evidence": [
2026-06-23T09:38:02.9993697Z             {
2026-06-23T09:38:02.9993837Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9993946Z               "line": 419
2026-06-23T09:38:02.9994056Z             },
2026-06-23T09:38:02.9994152Z             {
2026-06-23T09:38:02.9994285Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9994399Z               "line": 470
2026-06-23T09:38:02.9994509Z             },
2026-06-23T09:38:02.9994614Z             {
2026-06-23T09:38:02.9994744Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9994857Z               "line": 499
2026-06-23T09:38:02.9994957Z             },
2026-06-23T09:38:02.9995058Z             {
2026-06-23T09:38:02.9995185Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:02.9995286Z               "line": 526
2026-06-23T09:38:02.9995392Z             }
2026-06-23T09:38:02.9995496Z           ]
2026-06-23T09:38:02.9995604Z         }
2026-06-23T09:38:02.9995695Z       }
2026-06-23T09:38:02.9995799Z     },
2026-06-23T09:38:02.9995897Z     {
2026-06-23T09:38:02.9996041Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-23T09:38:02.9996259Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-23T09:38:02.9996404Z       "requiredStages": [
2026-06-23T09:38:02.9996527Z         "impl",
2026-06-23T09:38:02.9996627Z         "unit"
2026-06-23T09:38:02.9996737Z       ],
2026-06-23T09:38:02.9996842Z       "stages": {
2026-06-23T09:38:02.9996951Z         "doc": {
2026-06-23T09:38:02.9997066Z           "complete": false,
2026-06-23T09:38:02.9997171Z           "evidence": []
2026-06-23T09:38:02.9997276Z         },
2026-06-23T09:38:02.9997381Z         "impl": {
2026-06-23T09:38:02.9997495Z           "complete": true,
2026-06-23T09:38:02.9997606Z           "evidence": [
2026-06-23T09:38:02.9997701Z             {
2026-06-23T09:38:02.9997862Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9998067Z               "line": 62
2026-06-23T09:38:02.9998176Z             },
2026-06-23T09:38:02.9998276Z             {
2026-06-23T09:38:02.9998431Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9998540Z               "line": 71
2026-06-23T09:38:02.9998637Z             },
2026-06-23T09:38:02.9998836Z             {
2026-06-23T09:38:02.9999056Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9999165Z               "line": 80
2026-06-23T09:38:02.9999271Z             },
2026-06-23T09:38:02.9999366Z             {
2026-06-23T09:38:02.9999514Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:02.9999619Z               "line": 88
2026-06-23T09:38:02.9999728Z             },
2026-06-23T09:38:02.9999818Z             {
2026-06-23T09:38:02.9999971Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0000071Z               "line": 33
2026-06-23T09:38:03.0000182Z             },
2026-06-23T09:38:03.0000286Z             {
2026-06-23T09:38:03.0000424Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0000535Z               "line": 65
2026-06-23T09:38:03.0000638Z             },
2026-06-23T09:38:03.0000734Z             {
2026-06-23T09:38:03.0000864Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0000976Z               "line": 74
2026-06-23T09:38:03.0001080Z             },
2026-06-23T09:38:03.0001187Z             {
2026-06-23T09:38:03.0001329Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0001439Z               "line": 93
2026-06-23T09:38:03.0001544Z             },
2026-06-23T09:38:03.0001638Z             {
2026-06-23T09:38:03.0001778Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0001882Z               "line": 102
2026-06-23T09:38:03.0001987Z             },
2026-06-23T09:38:03.0002088Z             {
2026-06-23T09:38:03.0002225Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0002335Z               "line": 111
2026-06-23T09:38:03.0002432Z             },
2026-06-23T09:38:03.0002540Z             {
2026-06-23T09:38:03.0002678Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0002785Z               "line": 122
2026-06-23T09:38:03.0002888Z             },
2026-06-23T09:38:03.0002993Z             {
2026-06-23T09:38:03.0003137Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0003236Z               "line": 140
2026-06-23T09:38:03.0003335Z             },
2026-06-23T09:38:03.0003445Z             {
2026-06-23T09:38:03.0003577Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0003686Z               "line": 149
2026-06-23T09:38:03.0003787Z             },
2026-06-23T09:38:03.0003896Z             {
2026-06-23T09:38:03.0004030Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0004140Z               "line": 158
2026-06-23T09:38:03.0004253Z             },
2026-06-23T09:38:03.0004355Z             {
2026-06-23T09:38:03.0004487Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0004591Z               "line": 169
2026-06-23T09:38:03.0004702Z             },
2026-06-23T09:38:03.0004807Z             {
2026-06-23T09:38:03.0004945Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0005059Z               "line": 177
2026-06-23T09:38:03.0005159Z             },
2026-06-23T09:38:03.0005265Z             {
2026-06-23T09:38:03.0005393Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0005489Z               "line": 186
2026-06-23T09:38:03.0005594Z             },
2026-06-23T09:38:03.0005694Z             {
2026-06-23T09:38:03.0005827Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0005933Z               "line": 195
2026-06-23T09:38:03.0006042Z             },
2026-06-23T09:38:03.0006140Z             {
2026-06-23T09:38:03.0006274Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0006495Z               "line": 204
2026-06-23T09:38:03.0006592Z             },
2026-06-23T09:38:03.0006687Z             {
2026-06-23T09:38:03.0006819Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0006935Z               "line": 216
2026-06-23T09:38:03.0007035Z             },
2026-06-23T09:38:03.0007236Z             {
2026-06-23T09:38:03.0007383Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0007488Z               "line": 223
2026-06-23T09:38:03.0007588Z             },
2026-06-23T09:38:03.0007688Z             {
2026-06-23T09:38:03.0007817Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0007922Z               "line": 232
2026-06-23T09:38:03.0008031Z             },
2026-06-23T09:38:03.0008137Z             {
2026-06-23T09:38:03.0008270Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0008375Z               "line": 239
2026-06-23T09:38:03.0008476Z             },
2026-06-23T09:38:03.0008576Z             {
2026-06-23T09:38:03.0008707Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0008822Z               "line": 306
2026-06-23T09:38:03.0008930Z             },
2026-06-23T09:38:03.0009086Z             {
2026-06-23T09:38:03.0009221Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0009334Z               "line": 318
2026-06-23T09:38:03.0009439Z             },
2026-06-23T09:38:03.0009545Z             {
2026-06-23T09:38:03.0009682Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0009793Z               "line": 405
2026-06-23T09:38:03.0009892Z             }
2026-06-23T09:38:03.0009996Z           ]
2026-06-23T09:38:03.0010098Z         },
2026-06-23T09:38:03.0010203Z         "int": {
2026-06-23T09:38:03.0010307Z           "complete": false,
2026-06-23T09:38:03.0010413Z           "evidence": []
2026-06-23T09:38:03.0010518Z         },
2026-06-23T09:38:03.0010622Z         "unit": {
2026-06-23T09:38:03.0010728Z           "complete": true,
2026-06-23T09:38:03.0010837Z           "evidence": [
2026-06-23T09:38:03.0010937Z             {
2026-06-23T09:38:03.0011066Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0011170Z               "line": 487
2026-06-23T09:38:03.0011280Z             },
2026-06-23T09:38:03.0011381Z             {
2026-06-23T09:38:03.0011527Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0011636Z               "line": 528
2026-06-23T09:38:03.0011742Z             },
2026-06-23T09:38:03.0011838Z             {
2026-06-23T09:38:03.0011974Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0012081Z               "line": 541
2026-06-23T09:38:03.0012185Z             },
2026-06-23T09:38:03.0012289Z             {
2026-06-23T09:38:03.0012428Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0012532Z               "line": 627
2026-06-23T09:38:03.0012643Z             }
2026-06-23T09:38:03.0012748Z           ]
2026-06-23T09:38:03.0012838Z         }
2026-06-23T09:38:03.0012938Z       }
2026-06-23T09:38:03.0013039Z     },
2026-06-23T09:38:03.0013139Z     {
2026-06-23T09:38:03.0013268Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-23T09:38:03.0013482Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-23T09:38:03.0013602Z       "requiredStages": [
2026-06-23T09:38:03.0013707Z         "impl",
2026-06-23T09:38:03.0013810Z         "unit"
2026-06-23T09:38:03.0013910Z       ],
2026-06-23T09:38:03.0014015Z       "stages": {
2026-06-23T09:38:03.0014117Z         "doc": {
2026-06-23T09:38:03.0014232Z           "complete": false,
2026-06-23T09:38:03.0014342Z           "evidence": []
2026-06-23T09:38:03.0014446Z         },
2026-06-23T09:38:03.0014542Z         "impl": {
2026-06-23T09:38:03.0014662Z           "complete": true,
2026-06-23T09:38:03.0014770Z           "evidence": [
2026-06-23T09:38:03.0014876Z             {
2026-06-23T09:38:03.0015019Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0015305Z               "line": 175
2026-06-23T09:38:03.0015414Z             },
2026-06-23T09:38:03.0015510Z             {
2026-06-23T09:38:03.0015657Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0015772Z               "line": 171
2026-06-23T09:38:03.0015878Z             }
2026-06-23T09:38:03.0016091Z           ]
2026-06-23T09:38:03.0016188Z         },
2026-06-23T09:38:03.0016296Z         "int": {
2026-06-23T09:38:03.0016406Z           "complete": false,
2026-06-23T09:38:03.0016522Z           "evidence": []
2026-06-23T09:38:03.0016620Z         },
2026-06-23T09:38:03.0016729Z         "unit": {
2026-06-23T09:38:03.0016844Z           "complete": true,
2026-06-23T09:38:03.0016947Z           "evidence": [
2026-06-23T09:38:03.0017046Z             {
2026-06-23T09:38:03.0017180Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0017290Z               "line": 297
2026-06-23T09:38:03.0017394Z             },
2026-06-23T09:38:03.0017505Z             {
2026-06-23T09:38:03.0017637Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0017752Z               "line": 836
2026-06-23T09:38:03.0017857Z             },
2026-06-23T09:38:03.0017952Z             {
2026-06-23T09:38:03.0018096Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0018205Z               "line": 849
2026-06-23T09:38:03.0018305Z             }
2026-06-23T09:38:03.0018406Z           ]
2026-06-23T09:38:03.0018497Z         }
2026-06-23T09:38:03.0018596Z       }
2026-06-23T09:38:03.0018697Z     },
2026-06-23T09:38:03.0018802Z     {
2026-06-23T09:38:03.0018930Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-23T09:38:03.0019187Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-23T09:38:03.0019300Z       "requiredStages": [
2026-06-23T09:38:03.0019406Z         "impl",
2026-06-23T09:38:03.0019509Z         "unit"
2026-06-23T09:38:03.0019613Z       ],
2026-06-23T09:38:03.0019723Z       "stages": {
2026-06-23T09:38:03.0019815Z         "doc": {
2026-06-23T09:38:03.0019937Z           "complete": false,
2026-06-23T09:38:03.0020053Z           "evidence": []
2026-06-23T09:38:03.0020148Z         },
2026-06-23T09:38:03.0020256Z         "impl": {
2026-06-23T09:38:03.0020358Z           "complete": true,
2026-06-23T09:38:03.0020477Z           "evidence": [
2026-06-23T09:38:03.0020580Z             {
2026-06-23T09:38:03.0020725Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0020834Z               "line": 116
2026-06-23T09:38:03.0020934Z             },
2026-06-23T09:38:03.0021035Z             {
2026-06-23T09:38:03.0021177Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0023704Z               "line": 507
2026-06-23T09:38:03.0023838Z             }
2026-06-23T09:38:03.0023947Z           ]
2026-06-23T09:38:03.0024047Z         },
2026-06-23T09:38:03.0024137Z         "int": {
2026-06-23T09:38:03.0024262Z           "complete": false,
2026-06-23T09:38:03.0024370Z           "evidence": []
2026-06-23T09:38:03.0024475Z         },
2026-06-23T09:38:03.0024580Z         "unit": {
2026-06-23T09:38:03.0024701Z           "complete": true,
2026-06-23T09:38:03.0024807Z           "evidence": [
2026-06-23T09:38:03.0024912Z             {
2026-06-23T09:38:03.0025078Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0025189Z               "line": 541
2026-06-23T09:38:03.0025298Z             }
2026-06-23T09:38:03.0025397Z           ]
2026-06-23T09:38:03.0025494Z         }
2026-06-23T09:38:03.0025594Z       }
2026-06-23T09:38:03.0025683Z     },
2026-06-23T09:38:03.0025785Z     {
2026-06-23T09:38:03.0025918Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-23T09:38:03.0026123Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-23T09:38:03.0026232Z       "requiredStages": [
2026-06-23T09:38:03.0026346Z         "impl",
2026-06-23T09:38:03.0026453Z         "unit"
2026-06-23T09:38:03.0026551Z       ],
2026-06-23T09:38:03.0026810Z       "stages": {
2026-06-23T09:38:03.0026904Z         "doc": {
2026-06-23T09:38:03.0027020Z           "complete": false,
2026-06-23T09:38:03.0027129Z           "evidence": []
2026-06-23T09:38:03.0027237Z         },
2026-06-23T09:38:03.0027342Z         "impl": {
2026-06-23T09:38:03.0027456Z           "complete": true,
2026-06-23T09:38:03.0027564Z           "evidence": [
2026-06-23T09:38:03.0027765Z             {
2026-06-23T09:38:03.0027916Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0028027Z               "line": 763
2026-06-23T09:38:03.0028127Z             },
2026-06-23T09:38:03.0028231Z             {
2026-06-23T09:38:03.0028366Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:03.0028484Z               "line": 28
2026-06-23T09:38:03.0028584Z             }
2026-06-23T09:38:03.0028685Z           ]
2026-06-23T09:38:03.0028784Z         },
2026-06-23T09:38:03.0028889Z         "int": {
2026-06-23T09:38:03.0029085Z           "complete": false,
2026-06-23T09:38:03.0029194Z           "evidence": []
2026-06-23T09:38:03.0029301Z         },
2026-06-23T09:38:03.0029409Z         "unit": {
2026-06-23T09:38:03.0029519Z           "complete": true,
2026-06-23T09:38:03.0029620Z           "evidence": [
2026-06-23T09:38:03.0029719Z             {
2026-06-23T09:38:03.0029851Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:03.0029966Z               "line": 229
2026-06-23T09:38:03.0030069Z             }
2026-06-23T09:38:03.0030163Z           ]
2026-06-23T09:38:03.0030264Z         }
2026-06-23T09:38:03.0030365Z       }
2026-06-23T09:38:03.0030459Z     },
2026-06-23T09:38:03.0030555Z     {
2026-06-23T09:38:03.0030689Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-23T09:38:03.0030855Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-23T09:38:03.0030965Z       "requiredStages": [],
2026-06-23T09:38:03.0031070Z       "stages": {
2026-06-23T09:38:03.0031160Z         "doc": {
2026-06-23T09:38:03.0031275Z           "complete": false,
2026-06-23T09:38:03.0031385Z           "evidence": []
2026-06-23T09:38:03.0031494Z         },
2026-06-23T09:38:03.0031600Z         "impl": {
2026-06-23T09:38:03.0031709Z           "complete": false,
2026-06-23T09:38:03.0031819Z           "evidence": []
2026-06-23T09:38:03.0031915Z         },
2026-06-23T09:38:03.0032018Z         "int": {
2026-06-23T09:38:03.0032129Z           "complete": false,
2026-06-23T09:38:03.0032239Z           "evidence": []
2026-06-23T09:38:03.0032347Z         },
2026-06-23T09:38:03.0032449Z         "unit": {
2026-06-23T09:38:03.0032563Z           "complete": false,
2026-06-23T09:38:03.0032662Z           "evidence": []
2026-06-23T09:38:03.0032766Z         }
2026-06-23T09:38:03.0032857Z       }
2026-06-23T09:38:03.0032962Z     },
2026-06-23T09:38:03.0033061Z     {
2026-06-23T09:38:03.0033211Z       "id": "REQ-HAZARD-STOP-PATH-PSYCHE-ORPHAN-REAP",
2026-06-23T09:38:03.0036238Z       "title": "Endpoint-stop and brain-death reconcile MUST reap a brain-less perch's orphan detached Psyche via the cmdline-scoped guard (`psyche_orphan_should_reap`) — the handle-reap (`LiveSet::stop_host`, REQ-HAZARD-UNHOST-PSYCHE-REAP) CANNOT, because the owning brain is gone (its `psyche_child` handle died with it), and the brain-start scoped-reap (REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP) never fires for a perch being STOPPED rather than re-hosted. So the live-host calls the scoped reap after `stop_host` at the reconcile stop-side AND in `confirm_residency_or_unhost`. Preserves fail-safe-decline (pid-alive AND exe-basename==psyche-program AND cmdline contains `<id>-psyche`; any unreadable signal DECLINES — a missed dup is bounded, a wrong-kill is catastrophic). This is the orphan-leak half of the perri F-010xF-015 field bug (the unsupervised install-dir Psyche that locked an update); the other half is the psyche own-copy (ADR-0025 amendment). (v0.13.2 W3 (a))",
2026-06-23T09:38:03.0036383Z       "requiredStages": [
2026-06-23T09:38:03.0036497Z         "doc",
2026-06-23T09:38:03.0036597Z         "impl",
2026-06-23T09:38:03.0036817Z         "unit",
2026-06-23T09:38:03.0036916Z         "int"
2026-06-23T09:38:03.0037022Z       ],
2026-06-23T09:38:03.0037125Z       "stages": {
2026-06-23T09:38:03.0037231Z         "doc": {
2026-06-23T09:38:03.0037351Z           "complete": true,
2026-06-23T09:38:03.0037454Z           "evidence": [
2026-06-23T09:38:03.0037560Z             {
2026-06-23T09:38:03.0037788Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:03.0037897Z               "line": 531
2026-06-23T09:38:03.0038002Z             },
2026-06-23T09:38:03.0038105Z             {
2026-06-23T09:38:03.0038320Z               "path": "docs/adr/0025-live-daemon-coordinated-adapter-update.md",
2026-06-23T09:38:03.0038429Z               "line": 45
2026-06-23T09:38:03.0038529Z             }
2026-06-23T09:38:03.0038630Z           ]
2026-06-23T09:38:03.0038734Z         },
2026-06-23T09:38:03.0038834Z         "impl": {
2026-06-23T09:38:03.0039035Z           "complete": true,
2026-06-23T09:38:03.0039139Z           "evidence": [
2026-06-23T09:38:03.0039250Z             {
2026-06-23T09:38:03.0039397Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:03.0039507Z               "line": 292
2026-06-23T09:38:03.0039603Z             },
2026-06-23T09:38:03.0039692Z             {
2026-06-23T09:38:03.0039841Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:03.0039955Z               "line": 483
2026-06-23T09:38:03.0040060Z             },
2026-06-23T09:38:03.0040166Z             {
2026-06-23T09:38:03.0040307Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:03.0040420Z               "line": 655
2026-06-23T09:38:03.0040512Z             },
2026-06-23T09:38:03.0040606Z             {
2026-06-23T09:38:03.0040747Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:03.0040853Z               "line": 708
2026-06-23T09:38:03.0040958Z             }
2026-06-23T09:38:03.0041057Z           ]
2026-06-23T09:38:03.0041164Z         },
2026-06-23T09:38:03.0041263Z         "int": {
2026-06-23T09:38:03.0041368Z           "complete": true,
2026-06-23T09:38:03.0041474Z           "evidence": [
2026-06-23T09:38:03.0041573Z             {
2026-06-23T09:38:03.0041745Z               "path": "crates/spt/tests/live_adapt_psyche_lock_e2e.rs",
2026-06-23T09:38:03.0041849Z               "line": 95
2026-06-23T09:38:03.0041950Z             },
2026-06-23T09:38:03.0042054Z             {
2026-06-23T09:38:03.0042216Z               "path": "crates/spt/tests/live_adapt_psyche_lock_e2e.rs",
2026-06-23T09:38:03.0042321Z               "line": 372
2026-06-23T09:38:03.0042418Z             }
2026-06-23T09:38:03.0042526Z           ]
2026-06-23T09:38:03.0042626Z         },
2026-06-23T09:38:03.0042733Z         "unit": {
2026-06-23T09:38:03.0042850Z           "complete": true,
2026-06-23T09:38:03.0042951Z           "evidence": [
2026-06-23T09:38:03.0043057Z             {
2026-06-23T09:38:03.0043193Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:03.0043302Z               "line": 1619
2026-06-23T09:38:03.0043403Z             },
2026-06-23T09:38:03.0043504Z             {
2026-06-23T09:38:03.0043651Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:03.0043761Z               "line": 1685
2026-06-23T09:38:03.0043861Z             }
2026-06-23T09:38:03.0043960Z           ]
2026-06-23T09:38:03.0044061Z         }
2026-06-23T09:38:03.0044166Z       }
2026-06-23T09:38:03.0044270Z     },
2026-06-23T09:38:03.0044362Z     {
2026-06-23T09:38:03.0044495Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-23T09:38:03.0044668Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-23T09:38:03.0044781Z       "requiredStages": [
2026-06-23T09:38:03.0044899Z         "impl",
2026-06-23T09:38:03.0045001Z         "unit"
2026-06-23T09:38:03.0045100Z       ],
2026-06-23T09:38:03.0045214Z       "stages": {
2026-06-23T09:38:03.0045316Z         "doc": {
2026-06-23T09:38:03.0045434Z           "complete": false,
2026-06-23T09:38:03.0045643Z           "evidence": []
2026-06-23T09:38:03.0045751Z         },
2026-06-23T09:38:03.0045855Z         "impl": {
2026-06-23T09:38:03.0045955Z           "complete": true,
2026-06-23T09:38:03.0046071Z           "evidence": [
2026-06-23T09:38:03.0046174Z             {
2026-06-23T09:38:03.0046314Z               "path": "crates/spt-live/src/turn.rs",
2026-06-23T09:38:03.0046517Z               "line": 19
2026-06-23T09:38:03.0046628Z             },
2026-06-23T09:38:03.0046723Z             {
2026-06-23T09:38:03.0046871Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0046986Z               "line": 466
2026-06-23T09:38:03.0047090Z             },
2026-06-23T09:38:03.0047195Z             {
2026-06-23T09:38:03.0047329Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0047442Z               "line": 502
2026-06-23T09:38:03.0047535Z             },
2026-06-23T09:38:03.0047639Z             {
2026-06-23T09:38:03.0047786Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0047897Z               "line": 550
2026-06-23T09:38:03.0048000Z             },
2026-06-23T09:38:03.0048101Z             {
2026-06-23T09:38:03.0048231Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T09:38:03.0048338Z               "line": 15
2026-06-23T09:38:03.0048443Z             },
2026-06-23T09:38:03.0048543Z             {
2026-06-23T09:38:03.0048679Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T09:38:03.0048784Z               "line": 48
2026-06-23T09:38:03.0048885Z             },
2026-06-23T09:38:03.0049065Z             {
2026-06-23T09:38:03.0049205Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T09:38:03.0049309Z               "line": 119
2026-06-23T09:38:03.0049413Z             },
2026-06-23T09:38:03.0049515Z             {
2026-06-23T09:38:03.0049647Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0049747Z               "line": 4603
2026-06-23T09:38:03.0049853Z             }
2026-06-23T09:38:03.0049948Z           ]
2026-06-23T09:38:03.0050048Z         },
2026-06-23T09:38:03.0050158Z         "int": {
2026-06-23T09:38:03.0050272Z           "complete": false,
2026-06-23T09:38:03.0050377Z           "evidence": []
2026-06-23T09:38:03.0050478Z         },
2026-06-23T09:38:03.0050581Z         "unit": {
2026-06-23T09:38:03.0050692Z           "complete": true,
2026-06-23T09:38:03.0050812Z           "evidence": [
2026-06-23T09:38:03.0050919Z             {
2026-06-23T09:38:03.0051057Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0051171Z               "line": 768
2026-06-23T09:38:03.0051265Z             },
2026-06-23T09:38:03.0051370Z             {
2026-06-23T09:38:03.0051509Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T09:38:03.0051618Z               "line": 165
2026-06-23T09:38:03.0051724Z             },
2026-06-23T09:38:03.0051828Z             {
2026-06-23T09:38:03.0051965Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-23T09:38:03.0052072Z               "line": 175
2026-06-23T09:38:03.0052171Z             }
2026-06-23T09:38:03.0052266Z           ]
2026-06-23T09:38:03.0052372Z         }
2026-06-23T09:38:03.0052476Z       }
2026-06-23T09:38:03.0052576Z     },
2026-06-23T09:38:03.0052678Z     {
2026-06-23T09:38:03.0052806Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-23T09:38:03.0053707Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-23T09:38:03.0053839Z       "requiredStages": [
2026-06-23T09:38:03.0053944Z         "impl",
2026-06-23T09:38:03.0054045Z         "unit"
2026-06-23T09:38:03.0054149Z       ],
2026-06-23T09:38:03.0054244Z       "stages": {
2026-06-23T09:38:03.0054345Z         "doc": {
2026-06-23T09:38:03.0054454Z           "complete": false,
2026-06-23T09:38:03.0054674Z           "evidence": []
2026-06-23T09:38:03.0054773Z         },
2026-06-23T09:38:03.0054883Z         "impl": {
2026-06-23T09:38:03.0054984Z           "complete": true,
2026-06-23T09:38:03.0055102Z           "evidence": [
2026-06-23T09:38:03.0055198Z             {
2026-06-23T09:38:03.0055341Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0055552Z               "line": 192
2026-06-23T09:38:03.0055656Z             },
2026-06-23T09:38:03.0055756Z             {
2026-06-23T09:38:03.0055891Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0056003Z               "line": 279
2026-06-23T09:38:03.0056103Z             }
2026-06-23T09:38:03.0056208Z           ]
2026-06-23T09:38:03.0056306Z         },
2026-06-23T09:38:03.0056410Z         "int": {
2026-06-23T09:38:03.0056520Z           "complete": false,
2026-06-23T09:38:03.0056617Z           "evidence": []
2026-06-23T09:38:03.0056715Z         },
2026-06-23T09:38:03.0056821Z         "unit": {
2026-06-23T09:38:03.0056935Z           "complete": true,
2026-06-23T09:38:03.0057044Z           "evidence": [
2026-06-23T09:38:03.0057150Z             {
2026-06-23T09:38:03.0057288Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0057397Z               "line": 470
2026-06-23T09:38:03.0057508Z             },
2026-06-23T09:38:03.0057598Z             {
2026-06-23T09:38:03.0057731Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0057842Z               "line": 526
2026-06-23T09:38:03.0057941Z             }
2026-06-23T09:38:03.0058041Z           ]
2026-06-23T09:38:03.0058133Z         }
2026-06-23T09:38:03.0058223Z       }
2026-06-23T09:38:03.0058322Z     },
2026-06-23T09:38:03.0058429Z     {
2026-06-23T09:38:03.0058561Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-23T09:38:03.0062530Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-23T09:38:03.0062674Z       "requiredStages": [
2026-06-23T09:38:03.0062773Z         "impl",
2026-06-23T09:38:03.0062875Z         "unit",
2026-06-23T09:38:03.0062979Z         "int"
2026-06-23T09:38:03.0063065Z       ],
2026-06-23T09:38:03.0063174Z       "stages": {
2026-06-23T09:38:03.0063285Z         "doc": {
2026-06-23T09:38:03.0063394Z           "complete": false,
2026-06-23T09:38:03.0063504Z           "evidence": []
2026-06-23T09:38:03.0063605Z         },
2026-06-23T09:38:03.0063714Z         "impl": {
2026-06-23T09:38:03.0063834Z           "complete": true,
2026-06-23T09:38:03.0063929Z           "evidence": [
2026-06-23T09:38:03.0064033Z             {
2026-06-23T09:38:03.0064187Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0064300Z               "line": 116
2026-06-23T09:38:03.0064399Z             },
2026-06-23T09:38:03.0064494Z             {
2026-06-23T09:38:03.0064746Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.0064858Z               "line": 132
2026-06-23T09:38:03.0064962Z             },
2026-06-23T09:38:03.0065066Z             {
2026-06-23T09:38:03.0065215Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.0065310Z               "line": 434
2026-06-23T09:38:03.0065501Z             },
2026-06-23T09:38:03.0065606Z             {
2026-06-23T09:38:03.0065744Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0065854Z               "line": 139
2026-06-23T09:38:03.0065954Z             },
2026-06-23T09:38:03.0066059Z             {
2026-06-23T09:38:03.0066206Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0066311Z               "line": 329
2026-06-23T09:38:03.0066407Z             },
2026-06-23T09:38:03.0066502Z             {
2026-06-23T09:38:03.0066648Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0066754Z               "line": 558
2026-06-23T09:38:03.0066866Z             }
2026-06-23T09:38:03.0066970Z           ]
2026-06-23T09:38:03.0067071Z         },
2026-06-23T09:38:03.0067181Z         "int": {
2026-06-23T09:38:03.0067294Z           "complete": true,
2026-06-23T09:38:03.0067410Z           "evidence": [
2026-06-23T09:38:03.0067505Z             {
2026-06-23T09:38:03.0067681Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-23T09:38:03.0067786Z               "line": 32
2026-06-23T09:38:03.0067886Z             }
2026-06-23T09:38:03.0067991Z           ]
2026-06-23T09:38:03.0068087Z         },
2026-06-23T09:38:03.0068191Z         "unit": {
2026-06-23T09:38:03.0068301Z           "complete": true,
2026-06-23T09:38:03.0068406Z           "evidence": [
2026-06-23T09:38:03.0068515Z             {
2026-06-23T09:38:03.0068650Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0068763Z               "line": 628
2026-06-23T09:38:03.0068873Z             },
2026-06-23T09:38:03.0069046Z             {
2026-06-23T09:38:03.0069193Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0069304Z               "line": 649
2026-06-23T09:38:03.0069398Z             },
2026-06-23T09:38:03.0069487Z             {
2026-06-23T09:38:03.0069626Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0069729Z               "line": 665
2026-06-23T09:38:03.0069837Z             },
2026-06-23T09:38:03.0069938Z             {
2026-06-23T09:38:03.0070086Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0070190Z               "line": 683
2026-06-23T09:38:03.0070291Z             },
2026-06-23T09:38:03.0070396Z             {
2026-06-23T09:38:03.0070534Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0070644Z               "line": 707
2026-06-23T09:38:03.0070744Z             }
2026-06-23T09:38:03.0070844Z           ]
2026-06-23T09:38:03.0070954Z         }
2026-06-23T09:38:03.0071059Z       }
2026-06-23T09:38:03.0071168Z     },
2026-06-23T09:38:03.0071264Z     {
2026-06-23T09:38:03.0071392Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-23T09:38:03.0071574Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-23T09:38:03.0071696Z       "requiredStages": [
2026-06-23T09:38:03.0071808Z         "impl",
2026-06-23T09:38:03.0071908Z         "unit"
2026-06-23T09:38:03.0072021Z       ],
2026-06-23T09:38:03.0072116Z       "stages": {
2026-06-23T09:38:03.0072221Z         "doc": {
2026-06-23T09:38:03.0072333Z           "complete": false,
2026-06-23T09:38:03.0072442Z           "evidence": []
2026-06-23T09:38:03.0072543Z         },
2026-06-23T09:38:03.0072644Z         "impl": {
2026-06-23T09:38:03.0072762Z           "complete": true,
2026-06-23T09:38:03.0072873Z           "evidence": [
2026-06-23T09:38:03.0072982Z             {
2026-06-23T09:38:03.0073115Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:03.0073225Z               "line": 35
2026-06-23T09:38:03.0073329Z             }
2026-06-23T09:38:03.0073526Z           ]
2026-06-23T09:38:03.0073626Z         },
2026-06-23T09:38:03.0073721Z         "int": {
2026-06-23T09:38:03.0073836Z           "complete": false,
2026-06-23T09:38:03.0073945Z           "evidence": []
2026-06-23T09:38:03.0074045Z         },
2026-06-23T09:38:03.0074151Z         "unit": {
2026-06-23T09:38:03.0074264Z           "complete": true,
2026-06-23T09:38:03.0074466Z           "evidence": [
2026-06-23T09:38:03.0074568Z             {
2026-06-23T09:38:03.0074709Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-23T09:38:03.0074818Z               "line": 220
2026-06-23T09:38:03.0074926Z             }
2026-06-23T09:38:03.0075026Z           ]
2026-06-23T09:38:03.0075122Z         }
2026-06-23T09:38:03.0075212Z       }
2026-06-23T09:38:03.0075316Z     },
2026-06-23T09:38:03.0075418Z     {
2026-06-23T09:38:03.0075545Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-23T09:38:03.0078690Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-23T09:38:03.0078847Z       "requiredStages": [
2026-06-23T09:38:03.0079033Z         "impl",
2026-06-23T09:38:03.0079133Z         "unit",
2026-06-23T09:38:03.0079239Z         "int"
2026-06-23T09:38:03.0079338Z       ],
2026-06-23T09:38:03.0079452Z       "stages": {
2026-06-23T09:38:03.0079554Z         "doc": {
2026-06-23T09:38:03.0079671Z           "complete": false,
2026-06-23T09:38:03.0079791Z           "evidence": []
2026-06-23T09:38:03.0079892Z         },
2026-06-23T09:38:03.0080000Z         "impl": {
2026-06-23T09:38:03.0080104Z           "complete": true,
2026-06-23T09:38:03.0080219Z           "evidence": [
2026-06-23T09:38:03.0080322Z             {
2026-06-23T09:38:03.0080469Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0080580Z               "line": 398
2026-06-23T09:38:03.0080675Z             },
2026-06-23T09:38:03.0080779Z             {
2026-06-23T09:38:03.0080913Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T09:38:03.0081022Z               "line": 107
2026-06-23T09:38:03.0081118Z             },
2026-06-23T09:38:03.0081223Z             {
2026-06-23T09:38:03.0081375Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T09:38:03.0081476Z               "line": 138
2026-06-23T09:38:03.0081571Z             },
2026-06-23T09:38:03.0081662Z             {
2026-06-23T09:38:03.0081815Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0081919Z               "line": 209
2026-06-23T09:38:03.0082024Z             },
2026-06-23T09:38:03.0082125Z             {
2026-06-23T09:38:03.0082266Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0082382Z               "line": 246
2026-06-23T09:38:03.0082487Z             },
2026-06-23T09:38:03.0082581Z             {
2026-06-23T09:38:03.0082724Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0082833Z               "line": 382
2026-06-23T09:38:03.0082926Z             }
2026-06-23T09:38:03.0083142Z           ]
2026-06-23T09:38:03.0083246Z         },
2026-06-23T09:38:03.0083341Z         "int": {
2026-06-23T09:38:03.0083457Z           "complete": true,
2026-06-23T09:38:03.0083565Z           "evidence": [
2026-06-23T09:38:03.0083670Z             {
2026-06-23T09:38:03.0083828Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-23T09:38:03.0084033Z               "line": 17
2026-06-23T09:38:03.0084137Z             }
2026-06-23T09:38:03.0084242Z           ]
2026-06-23T09:38:03.0084348Z         },
2026-06-23T09:38:03.0084448Z         "unit": {
2026-06-23T09:38:03.0084547Z           "complete": true,
2026-06-23T09:38:03.0084663Z           "evidence": [
2026-06-23T09:38:03.0084762Z             {
2026-06-23T09:38:03.0084905Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:03.0085016Z               "line": 1083
2026-06-23T09:38:03.0085129Z             }
2026-06-23T09:38:03.0085230Z           ]
2026-06-23T09:38:03.0085331Z         }
2026-06-23T09:38:03.0085439Z       }
2026-06-23T09:38:03.0085538Z     },
2026-06-23T09:38:03.0085643Z     {
2026-06-23T09:38:03.0085777Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-23T09:38:03.0086069Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-23T09:38:03.0086201Z       "requiredStages": [
2026-06-23T09:38:03.0086307Z         "impl",
2026-06-23T09:38:03.0086407Z         "unit"
2026-06-23T09:38:03.0086501Z       ],
2026-06-23T09:38:03.0086607Z       "stages": {
2026-06-23T09:38:03.0086706Z         "doc": {
2026-06-23T09:38:03.0086821Z           "complete": false,
2026-06-23T09:38:03.0086927Z           "evidence": []
2026-06-23T09:38:03.0087031Z         },
2026-06-23T09:38:03.0087140Z         "impl": {
2026-06-23T09:38:03.0087247Z           "complete": true,
2026-06-23T09:38:03.0087359Z           "evidence": [
2026-06-23T09:38:03.0087460Z             {
2026-06-23T09:38:03.0087618Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.0087726Z               "line": 405
2026-06-23T09:38:03.0087831Z             },
2026-06-23T09:38:03.0087926Z             {
2026-06-23T09:38:03.0088067Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.0088176Z               "line": 419
2026-06-23T09:38:03.0088278Z             },
2026-06-23T09:38:03.0088381Z             {
2026-06-23T09:38:03.0088535Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.0088644Z               "line": 156
2026-06-23T09:38:03.0088748Z             }
2026-06-23T09:38:03.0088841Z           ]
2026-06-23T09:38:03.0089020Z         },
2026-06-23T09:38:03.0089131Z         "int": {
2026-06-23T09:38:03.0089250Z           "complete": false,
2026-06-23T09:38:03.0089364Z           "evidence": []
2026-06-23T09:38:03.0089465Z         },
2026-06-23T09:38:03.0089564Z         "unit": {
2026-06-23T09:38:03.0089669Z           "complete": true,
2026-06-23T09:38:03.0089775Z           "evidence": [
2026-06-23T09:38:03.0089879Z             {
2026-06-23T09:38:03.0090027Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.0090133Z               "line": 875
2026-06-23T09:38:03.0090231Z             },
2026-06-23T09:38:03.0090337Z             {
2026-06-23T09:38:03.0090471Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.0090589Z               "line": 889
2026-06-23T09:38:03.0090693Z             },
2026-06-23T09:38:03.0090798Z             {
2026-06-23T09:38:03.0090944Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.0091048Z               "line": 908
2026-06-23T09:38:03.0091150Z             },
2026-06-23T09:38:03.0091253Z             {
2026-06-23T09:38:03.0091398Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.0091497Z               "line": 925
2026-06-23T09:38:03.0091606Z             },
2026-06-23T09:38:03.0091717Z             {
2026-06-23T09:38:03.0091869Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T09:38:03.0092103Z               "line": 441
2026-06-23T09:38:03.0092207Z             }
2026-06-23T09:38:03.0092317Z           ]
2026-06-23T09:38:03.0092422Z         }
2026-06-23T09:38:03.0092517Z       }
2026-06-23T09:38:03.0092613Z     },
2026-06-23T09:38:03.0092709Z     {
2026-06-23T09:38:03.0092841Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-23T09:38:03.0102616Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-23T09:38:03.0102945Z       "requiredStages": [
2026-06-23T09:38:03.0103082Z         "doc",
2026-06-23T09:38:03.0103188Z         "impl",
2026-06-23T09:38:03.0103297Z         "unit",
2026-06-23T09:38:03.0103411Z         "int"
2026-06-23T09:38:03.0103541Z       ],
2026-06-23T09:38:03.0103659Z       "stages": {
2026-06-23T09:38:03.0103763Z         "doc": {
2026-06-23T09:38:03.0103868Z           "complete": true,
2026-06-23T09:38:03.0103981Z           "evidence": [
2026-06-23T09:38:03.0104094Z             {
2026-06-23T09:38:03.0104305Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0104418Z               "line": 433
2026-06-23T09:38:03.0104515Z             },
2026-06-23T09:38:03.0104619Z             {
2026-06-23T09:38:03.0104752Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:03.0104863Z               "line": 402
2026-06-23T09:38:03.0104967Z             }
2026-06-23T09:38:03.0105140Z           ]
2026-06-23T09:38:03.0105248Z         },
2026-06-23T09:38:03.0105353Z         "impl": {
2026-06-23T09:38:03.0105464Z           "complete": true,
2026-06-23T09:38:03.0105577Z           "evidence": [
2026-06-23T09:38:03.0105673Z             {
2026-06-23T09:38:03.0105826Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0105939Z               "line": 797
2026-06-23T09:38:03.0106045Z             },
2026-06-23T09:38:03.0106151Z             {
2026-06-23T09:38:03.0106302Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0106413Z               "line": 822
2026-06-23T09:38:03.0106559Z             },
2026-06-23T09:38:03.0106663Z             {
2026-06-23T09:38:03.0106788Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0106902Z               "line": 839
2026-06-23T09:38:03.0107012Z             },
2026-06-23T09:38:03.0107117Z             {
2026-06-23T09:38:03.0107245Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0107365Z               "line": 854
2026-06-23T09:38:03.0107470Z             },
2026-06-23T09:38:03.0107574Z             {
2026-06-23T09:38:03.0107723Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0107831Z               "line": 874
2026-06-23T09:38:03.0107936Z             },
2026-06-23T09:38:03.0108042Z             {
2026-06-23T09:38:03.0108175Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0108280Z               "line": 964
2026-06-23T09:38:03.0108381Z             },
2026-06-23T09:38:03.0108489Z             {
2026-06-23T09:38:03.0108628Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0108753Z               "line": 1016
2026-06-23T09:38:03.0108856Z             },
2026-06-23T09:38:03.0109032Z             {
2026-06-23T09:38:03.0109182Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0109283Z               "line": 1075
2026-06-23T09:38:03.0109383Z             },
2026-06-23T09:38:03.0109478Z             {
2026-06-23T09:38:03.0109635Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:03.0109755Z               "line": 527
2026-06-23T09:38:03.0109859Z             }
2026-06-23T09:38:03.0109965Z           ]
2026-06-23T09:38:03.0110055Z         },
2026-06-23T09:38:03.0110159Z         "int": {
2026-06-23T09:38:03.0110266Z           "complete": true,
2026-06-23T09:38:03.0110375Z           "evidence": [
2026-06-23T09:38:03.0110479Z             {
2026-06-23T09:38:03.0110623Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T09:38:03.0110742Z               "line": 35
2026-06-23T09:38:03.0110842Z             },
2026-06-23T09:38:03.0110929Z             {
2026-06-23T09:38:03.0111071Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T09:38:03.0111176Z               "line": 569
2026-06-23T09:38:03.0111282Z             },
2026-06-23T09:38:03.0111385Z             {
2026-06-23T09:38:03.0111525Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T09:38:03.0111634Z               "line": 590
2026-06-23T09:38:03.0111737Z             }
2026-06-23T09:38:03.0111828Z           ]
2026-06-23T09:38:03.0111933Z         },
2026-06-23T09:38:03.0112040Z         "unit": {
2026-06-23T09:38:03.0112150Z           "complete": true,
2026-06-23T09:38:03.0112260Z           "evidence": [
2026-06-23T09:38:03.0112364Z             {
2026-06-23T09:38:03.0112503Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0112613Z               "line": 1202
2026-06-23T09:38:03.0112717Z             },
2026-06-23T09:38:03.0112823Z             {
2026-06-23T09:38:03.0113065Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0113166Z               "line": 1246
2026-06-23T09:38:03.0113270Z             },
2026-06-23T09:38:03.0113380Z             {
2026-06-23T09:38:03.0113519Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0113628Z               "line": 1260
2026-06-23T09:38:03.0113839Z             },
2026-06-23T09:38:03.0113942Z             {
2026-06-23T09:38:03.0114087Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0114186Z               "line": 1278
2026-06-23T09:38:03.0114285Z             },
2026-06-23T09:38:03.0114390Z             {
2026-06-23T09:38:03.0114536Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0114649Z               "line": 1302
2026-06-23T09:38:03.0114755Z             },
2026-06-23T09:38:03.0114860Z             {
2026-06-23T09:38:03.0114997Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0115108Z               "line": 1529
2026-06-23T09:38:03.0115213Z             }
2026-06-23T09:38:03.0115317Z           ]
2026-06-23T09:38:03.0115427Z         }
2026-06-23T09:38:03.0115527Z       }
2026-06-23T09:38:03.0115636Z     },
2026-06-23T09:38:03.0115733Z     {
2026-06-23T09:38:03.0115856Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-23T09:38:03.0118049Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-23T09:38:03.0118181Z       "requiredStages": [
2026-06-23T09:38:03.0118288Z         "unit",
2026-06-23T09:38:03.0118383Z         "int"
2026-06-23T09:38:03.0118487Z       ],
2026-06-23T09:38:03.0118598Z       "stages": {
2026-06-23T09:38:03.0118692Z         "doc": {
2026-06-23T09:38:03.0118816Z           "complete": true,
2026-06-23T09:38:03.0118922Z           "evidence": [
2026-06-23T09:38:03.0119121Z             {
2026-06-23T09:38:03.0119256Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:03.0119364Z               "line": 381
2026-06-23T09:38:03.0119473Z             }
2026-06-23T09:38:03.0119568Z           ]
2026-06-23T09:38:03.0119677Z         },
2026-06-23T09:38:03.0119780Z         "impl": {
2026-06-23T09:38:03.0119905Z           "complete": true,
2026-06-23T09:38:03.0120010Z           "evidence": [
2026-06-23T09:38:03.0120105Z             {
2026-06-23T09:38:03.0120258Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0120372Z               "line": 101
2026-06-23T09:38:03.0120472Z             }
2026-06-23T09:38:03.0123741Z           ]
2026-06-23T09:38:03.0123883Z         },
2026-06-23T09:38:03.0123988Z         "int": {
2026-06-23T09:38:03.0124112Z           "complete": true,
2026-06-23T09:38:03.0124221Z           "evidence": [
2026-06-23T09:38:03.0124327Z             {
2026-06-23T09:38:03.0124478Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0124589Z               "line": 1051
2026-06-23T09:38:03.0124685Z             }
2026-06-23T09:38:03.0124784Z           ]
2026-06-23T09:38:03.0124883Z         },
2026-06-23T09:38:03.0124993Z         "unit": {
2026-06-23T09:38:03.0125106Z           "complete": true,
2026-06-23T09:38:03.0125219Z           "evidence": [
2026-06-23T09:38:03.0125310Z             {
2026-06-23T09:38:03.0125467Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0125577Z               "line": 2464
2026-06-23T09:38:03.0125834Z             }
2026-06-23T09:38:03.0125945Z           ]
2026-06-23T09:38:03.0126045Z         }
2026-06-23T09:38:03.0126144Z       }
2026-06-23T09:38:03.0126240Z     },
2026-06-23T09:38:03.0126345Z     {
2026-06-23T09:38:03.0126493Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-23T09:38:03.0130851Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-23T09:38:03.0131138Z       "requiredStages": [
2026-06-23T09:38:03.0131247Z         "doc",
2026-06-23T09:38:03.0131352Z         "impl",
2026-06-23T09:38:03.0131457Z         "unit",
2026-06-23T09:38:03.0131562Z         "int"
2026-06-23T09:38:03.0131662Z       ],
2026-06-23T09:38:03.0131767Z       "stages": {
2026-06-23T09:38:03.0131867Z         "doc": {
2026-06-23T09:38:03.0131981Z           "complete": true,
2026-06-23T09:38:03.0132092Z           "evidence": [
2026-06-23T09:38:03.0132191Z             {
2026-06-23T09:38:03.0132311Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0132411Z               "line": 355
2026-06-23T09:38:03.0132520Z             }
2026-06-23T09:38:03.0132621Z           ]
2026-06-23T09:38:03.0132731Z         },
2026-06-23T09:38:03.0132834Z         "impl": {
2026-06-23T09:38:03.0132948Z           "complete": true,
2026-06-23T09:38:03.0133057Z           "evidence": [
2026-06-23T09:38:03.0133160Z             {
2026-06-23T09:38:03.0133313Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:03.0133424Z               "line": 333
2026-06-23T09:38:03.0133522Z             },
2026-06-23T09:38:03.0133623Z             {
2026-06-23T09:38:03.0133776Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.0133890Z               "line": 892
2026-06-23T09:38:03.0133996Z             }
2026-06-23T09:38:03.0134100Z           ]
2026-06-23T09:38:03.0134200Z         },
2026-06-23T09:38:03.0134301Z         "int": {
2026-06-23T09:38:03.0134410Z           "complete": true,
2026-06-23T09:38:03.0134524Z           "evidence": [
2026-06-23T09:38:03.0134630Z             {
2026-06-23T09:38:03.0134810Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:03.0134930Z               "line": 872
2026-06-23T09:38:03.0135029Z             },
2026-06-23T09:38:03.0135134Z             {
2026-06-23T09:38:03.0135316Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:03.0135434Z               "line": 2168
2026-06-23T09:38:03.0135539Z             }
2026-06-23T09:38:03.0135643Z           ]
2026-06-23T09:38:03.0135746Z         },
2026-06-23T09:38:03.0135851Z         "unit": {
2026-06-23T09:38:03.0135967Z           "complete": true,
2026-06-23T09:38:03.0136075Z           "evidence": [
2026-06-23T09:38:03.0136290Z             {
2026-06-23T09:38:03.0136442Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.0136553Z               "line": 1710
2026-06-23T09:38:03.0136657Z             }
2026-06-23T09:38:03.0136757Z           ]
2026-06-23T09:38:03.0136863Z         }
2026-06-23T09:38:03.0136962Z       }
2026-06-23T09:38:03.0137057Z     },
2026-06-23T09:38:03.0137229Z     {
2026-06-23T09:38:03.0137430Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-23T09:38:03.0142852Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-23T09:38:03.0143013Z       "requiredStages": [
2026-06-23T09:38:03.0143119Z         "impl",
2026-06-23T09:38:03.0143220Z         "unit",
2026-06-23T09:38:03.0143324Z         "int"
2026-06-23T09:38:03.0143432Z       ],
2026-06-23T09:38:03.0143537Z       "stages": {
2026-06-23T09:38:03.0143641Z         "doc": {
2026-06-23T09:38:03.0143749Z           "complete": false,
2026-06-23T09:38:03.0143859Z           "evidence": []
2026-06-23T09:38:03.0143964Z         },
2026-06-23T09:38:03.0144068Z         "impl": {
2026-06-23T09:38:03.0144189Z           "complete": true,
2026-06-23T09:38:03.0144284Z           "evidence": [
2026-06-23T09:38:03.0144392Z             {
2026-06-23T09:38:03.0144546Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0144651Z               "line": 323
2026-06-23T09:38:03.0144750Z             },
2026-06-23T09:38:03.0144851Z             {
2026-06-23T09:38:03.0144999Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0145108Z               "line": 745
2026-06-23T09:38:03.0145219Z             }
2026-06-23T09:38:03.0145328Z           ]
2026-06-23T09:38:03.0145428Z         },
2026-06-23T09:38:03.0145538Z         "int": {
2026-06-23T09:38:03.0145637Z           "complete": true,
2026-06-23T09:38:03.0145748Z           "evidence": [
2026-06-23T09:38:03.0145843Z             {
2026-06-23T09:38:03.0146032Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:03.0146146Z               "line": 871
2026-06-23T09:38:03.0146245Z             }
2026-06-23T09:38:03.0146344Z           ]
2026-06-23T09:38:03.0146445Z         },
2026-06-23T09:38:03.0146555Z         "unit": {
2026-06-23T09:38:03.0146673Z           "complete": true,
2026-06-23T09:38:03.0146898Z           "evidence": [
2026-06-23T09:38:03.0147002Z             {
2026-06-23T09:38:03.0147151Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0147255Z               "line": 2679
2026-06-23T09:38:03.0147356Z             },
2026-06-23T09:38:03.0147456Z             {
2026-06-23T09:38:03.0147603Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0147808Z               "line": 2748
2026-06-23T09:38:03.0147918Z             }
2026-06-23T09:38:03.0148019Z           ]
2026-06-23T09:38:03.0148114Z         }
2026-06-23T09:38:03.0148218Z       }
2026-06-23T09:38:03.0148325Z     },
2026-06-23T09:38:03.0148424Z     {
2026-06-23T09:38:03.0148557Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-23T09:38:03.0149543Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-23T09:38:03.0149668Z       "requiredStages": [
2026-06-23T09:38:03.0149777Z         "doc",
2026-06-23T09:38:03.0149876Z         "impl",
2026-06-23T09:38:03.0149988Z         "unit"
2026-06-23T09:38:03.0150092Z       ],
2026-06-23T09:38:03.0150196Z       "stages": {
2026-06-23T09:38:03.0150293Z         "doc": {
2026-06-23T09:38:03.0150406Z           "complete": true,
2026-06-23T09:38:03.0150516Z           "evidence": [
2026-06-23T09:38:03.0150617Z             {
2026-06-23T09:38:03.0150768Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:03.0150874Z               "line": 366
2026-06-23T09:38:03.0150974Z             }
2026-06-23T09:38:03.0151073Z           ]
2026-06-23T09:38:03.0151177Z         },
2026-06-23T09:38:03.0151282Z         "impl": {
2026-06-23T09:38:03.0151395Z           "complete": true,
2026-06-23T09:38:03.0151499Z           "evidence": [
2026-06-23T09:38:03.0151595Z             {
2026-06-23T09:38:03.0151738Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T09:38:03.0151852Z               "line": 87
2026-06-23T09:38:03.0151953Z             },
2026-06-23T09:38:03.0152062Z             {
2026-06-23T09:38:03.0152206Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:03.0152315Z               "line": 203
2026-06-23T09:38:03.0152415Z             },
2026-06-23T09:38:03.0152521Z             {
2026-06-23T09:38:03.0152672Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0152772Z               "line": 55
2026-06-23T09:38:03.0152883Z             },
2026-06-23T09:38:03.0152982Z             {
2026-06-23T09:38:03.0153131Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.0153244Z               "line": 31
2026-06-23T09:38:03.0153345Z             },
2026-06-23T09:38:03.0153451Z             {
2026-06-23T09:38:03.0153583Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.0153702Z               "line": 446
2026-06-23T09:38:03.0153804Z             },
2026-06-23T09:38:03.0153907Z             {
2026-06-23T09:38:03.0154064Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0154173Z               "line": 95
2026-06-23T09:38:03.0154276Z             },
2026-06-23T09:38:03.0154366Z             {
2026-06-23T09:38:03.0154515Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.0154629Z               "line": 29
2026-06-23T09:38:03.0154729Z             },
2026-06-23T09:38:03.0154839Z             {
2026-06-23T09:38:03.0154971Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.0155083Z               "line": 104
2026-06-23T09:38:03.0155182Z             },
2026-06-23T09:38:03.0155277Z             {
2026-06-23T09:38:03.0155430Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0155535Z               "line": 208
2026-06-23T09:38:03.0155635Z             },
2026-06-23T09:38:03.0155726Z             {
2026-06-23T09:38:03.0155988Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T09:38:03.0156117Z               "line": 28
2026-06-23T09:38:03.0156227Z             },
2026-06-23T09:38:03.0156328Z             {
2026-06-23T09:38:03.0156474Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T09:38:03.0156587Z               "line": 74
2026-06-23T09:38:03.0156777Z             },
2026-06-23T09:38:03.0156885Z             {
2026-06-23T09:38:03.0157029Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T09:38:03.0157134Z               "line": 32
2026-06-23T09:38:03.0157238Z             },
2026-06-23T09:38:03.0157344Z             {
2026-06-23T09:38:03.0157491Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0157591Z               "line": 40
2026-06-23T09:38:03.0157697Z             },
2026-06-23T09:38:03.0157801Z             {
2026-06-23T09:38:03.0157931Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0158040Z               "line": 184
2026-06-23T09:38:03.0158144Z             },
2026-06-23T09:38:03.0158245Z             {
2026-06-23T09:38:03.0158369Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T09:38:03.0158473Z               "line": 61
2026-06-23T09:38:03.0158575Z             },
2026-06-23T09:38:03.0158683Z             {
2026-06-23T09:38:03.0158821Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T09:38:03.0158928Z               "line": 131
2026-06-23T09:38:03.0159117Z             },
2026-06-23T09:38:03.0159214Z             {
2026-06-23T09:38:03.0159355Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T09:38:03.0159459Z               "line": 223
2026-06-23T09:38:03.0159569Z             },
2026-06-23T09:38:03.0159670Z             {
2026-06-23T09:38:03.0159798Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T09:38:03.0159909Z               "line": 37
2026-06-23T09:38:03.0160008Z             },
2026-06-23T09:38:03.0160112Z             {
2026-06-23T09:38:03.0160247Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T09:38:03.0160365Z               "line": 38
2026-06-23T09:38:03.0160470Z             },
2026-06-23T09:38:03.0160566Z             {
2026-06-23T09:38:03.0160708Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T09:38:03.0160819Z               "line": 36
2026-06-23T09:38:03.0160928Z             },
2026-06-23T09:38:03.0161028Z             {
2026-06-23T09:38:03.0161177Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T09:38:03.0161285Z               "line": 40
2026-06-23T09:38:03.0161391Z             }
2026-06-23T09:38:03.0161483Z           ]
2026-06-23T09:38:03.0161581Z         },
2026-06-23T09:38:03.0161690Z         "int": {
2026-06-23T09:38:03.0161795Z           "complete": false,
2026-06-23T09:38:03.0161898Z           "evidence": []
2026-06-23T09:38:03.0161993Z         },
2026-06-23T09:38:03.0162097Z         "unit": {
2026-06-23T09:38:03.0162209Z           "complete": true,
2026-06-23T09:38:03.0162322Z           "evidence": [
2026-06-23T09:38:03.0162427Z             {
2026-06-23T09:38:03.0162574Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0162683Z               "line": 212
2026-06-23T09:38:03.0162790Z             },
2026-06-23T09:38:03.0162885Z             {
2026-06-23T09:38:03.0163038Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-23T09:38:03.0163142Z               "line": 136
2026-06-23T09:38:03.0163251Z             },
2026-06-23T09:38:03.0163347Z             {
2026-06-23T09:38:03.0163485Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T09:38:03.0163590Z               "line": 685
2026-06-23T09:38:03.0163686Z             },
2026-06-23T09:38:03.0163790Z             {
2026-06-23T09:38:03.0163933Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T09:38:03.0164040Z               "line": 224
2026-06-23T09:38:03.0164157Z             },
2026-06-23T09:38:03.0164263Z             {
2026-06-23T09:38:03.0164514Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-23T09:38:03.0164624Z               "line": 206
2026-06-23T09:38:03.0164728Z             },
2026-06-23T09:38:03.0164822Z             {
2026-06-23T09:38:03.0164969Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T09:38:03.0165071Z               "line": 112
2026-06-23T09:38:03.0165174Z             },
2026-06-23T09:38:03.0165380Z             {
2026-06-23T09:38:03.0165518Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T09:38:03.0165624Z               "line": 157
2026-06-23T09:38:03.0165728Z             },
2026-06-23T09:38:03.0165832Z             {
2026-06-23T09:38:03.0165981Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T09:38:03.0166085Z               "line": 215
2026-06-23T09:38:03.0166190Z             },
2026-06-23T09:38:03.0166282Z             {
2026-06-23T09:38:03.0166423Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T09:38:03.0166529Z               "line": 141
2026-06-23T09:38:03.0166634Z             },
2026-06-23T09:38:03.0166738Z             {
2026-06-23T09:38:03.0166873Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T09:38:03.0166987Z               "line": 162
2026-06-23T09:38:03.0167090Z             }
2026-06-23T09:38:03.0167195Z           ]
2026-06-23T09:38:03.0167290Z         }
2026-06-23T09:38:03.0167394Z       }
2026-06-23T09:38:03.0167488Z     },
2026-06-23T09:38:03.0167589Z     {
2026-06-23T09:38:03.0167732Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-23T09:38:03.0169687Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-23T09:38:03.0169817Z       "requiredStages": [
2026-06-23T09:38:03.0169925Z         "doc",
2026-06-23T09:38:03.0170029Z         "impl",
2026-06-23T09:38:03.0170134Z         "unit",
2026-06-23T09:38:03.0170244Z         "int"
2026-06-23T09:38:03.0170348Z       ],
2026-06-23T09:38:03.0170444Z       "stages": {
2026-06-23T09:38:03.0170540Z         "doc": {
2026-06-23T09:38:03.0170658Z           "complete": true,
2026-06-23T09:38:03.0170764Z           "evidence": [
2026-06-23T09:38:03.0170869Z             {
2026-06-23T09:38:03.0170997Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:03.0171112Z               "line": 250
2026-06-23T09:38:03.0171212Z             }
2026-06-23T09:38:03.0171312Z           ]
2026-06-23T09:38:03.0171418Z         },
2026-06-23T09:38:03.0171521Z         "impl": {
2026-06-23T09:38:03.0171646Z           "complete": true,
2026-06-23T09:38:03.0171752Z           "evidence": [
2026-06-23T09:38:03.0171855Z             {
2026-06-23T09:38:03.0171994Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T09:38:03.0172099Z               "line": 135
2026-06-23T09:38:03.0172207Z             },
2026-06-23T09:38:03.0172307Z             {
2026-06-23T09:38:03.0172440Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T09:38:03.0172548Z               "line": 157
2026-06-23T09:38:03.0172658Z             }
2026-06-23T09:38:03.0172764Z           ]
2026-06-23T09:38:03.0172858Z         },
2026-06-23T09:38:03.0172963Z         "int": {
2026-06-23T09:38:03.0173073Z           "complete": true,
2026-06-23T09:38:03.0173191Z           "evidence": [
2026-06-23T09:38:03.0173288Z             {
2026-06-23T09:38:03.0173441Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-23T09:38:03.0173559Z               "line": 15
2026-06-23T09:38:03.0173660Z             }
2026-06-23T09:38:03.0173864Z           ]
2026-06-23T09:38:03.0173960Z         },
2026-06-23T09:38:03.0174074Z         "unit": {
2026-06-23T09:38:03.0174179Z           "complete": true,
2026-06-23T09:38:03.0174295Z           "evidence": [
2026-06-23T09:38:03.0174398Z             {
2026-06-23T09:38:03.0174537Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-23T09:38:03.0174751Z               "line": 233
2026-06-23T09:38:03.0174857Z             }
2026-06-23T09:38:03.0174962Z           ]
2026-06-23T09:38:03.0175065Z         }
2026-06-23T09:38:03.0175169Z       }
2026-06-23T09:38:03.0175270Z     },
2026-06-23T09:38:03.0175363Z     {
2026-06-23T09:38:03.0175516Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-23T09:38:03.0175701Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-23T09:38:03.0175820Z       "requiredStages": [
2026-06-23T09:38:03.0175921Z         "impl",
2026-06-23T09:38:03.0176030Z         "unit"
2026-06-23T09:38:03.0176135Z       ],
2026-06-23T09:38:03.0176236Z       "stages": {
2026-06-23T09:38:03.0176354Z         "doc": {
2026-06-23T09:38:03.0176465Z           "complete": false,
2026-06-23T09:38:03.0176579Z           "evidence": []
2026-06-23T09:38:03.0176679Z         },
2026-06-23T09:38:03.0176784Z         "impl": {
2026-06-23T09:38:03.0176894Z           "complete": true,
2026-06-23T09:38:03.0176993Z           "evidence": [
2026-06-23T09:38:03.0177104Z             {
2026-06-23T09:38:03.0177246Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0177356Z               "line": 95
2026-06-23T09:38:03.0177457Z             },
2026-06-23T09:38:03.0177566Z             {
2026-06-23T09:38:03.0177702Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0177813Z               "line": 117
2026-06-23T09:38:03.0177920Z             }
2026-06-23T09:38:03.0178024Z           ]
2026-06-23T09:38:03.0178130Z         },
2026-06-23T09:38:03.0178235Z         "int": {
2026-06-23T09:38:03.0178348Z           "complete": false,
2026-06-23T09:38:03.0178455Z           "evidence": []
2026-06-23T09:38:03.0178560Z         },
2026-06-23T09:38:03.0178658Z         "unit": {
2026-06-23T09:38:03.0178769Z           "complete": true,
2026-06-23T09:38:03.0178869Z           "evidence": [
2026-06-23T09:38:03.0179041Z             {
2026-06-23T09:38:03.0179184Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0179298Z               "line": 250
2026-06-23T09:38:03.0179399Z             },
2026-06-23T09:38:03.0179503Z             {
2026-06-23T09:38:03.0179636Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:03.0179747Z               "line": 412
2026-06-23T09:38:03.0179837Z             },
2026-06-23T09:38:03.0179941Z             {
2026-06-23T09:38:03.0180067Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0180175Z               "line": 611
2026-06-23T09:38:03.0180276Z             },
2026-06-23T09:38:03.0180381Z             {
2026-06-23T09:38:03.0180513Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0180622Z               "line": 669
2026-06-23T09:38:03.0180733Z             }
2026-06-23T09:38:03.0180842Z           ]
2026-06-23T09:38:03.0180946Z         }
2026-06-23T09:38:03.0181053Z       }
2026-06-23T09:38:03.0181143Z     },
2026-06-23T09:38:03.0181247Z     {
2026-06-23T09:38:03.0181377Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-23T09:38:03.0183862Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-23T09:38:03.0184104Z       "requiredStages": [
2026-06-23T09:38:03.0184206Z         "impl",
2026-06-23T09:38:03.0184310Z         "unit",
2026-06-23T09:38:03.0184511Z         "int"
2026-06-23T09:38:03.0184610Z       ],
2026-06-23T09:38:03.0184720Z       "stages": {
2026-06-23T09:38:03.0184816Z         "doc": {
2026-06-23T09:38:03.0184934Z           "complete": false,
2026-06-23T09:38:03.0185049Z           "evidence": []
2026-06-23T09:38:03.0185145Z         },
2026-06-23T09:38:03.0185259Z         "impl": {
2026-06-23T09:38:03.0185368Z           "complete": true,
2026-06-23T09:38:03.0185479Z           "evidence": [
2026-06-23T09:38:03.0185578Z             {
2026-06-23T09:38:03.0185729Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0185854Z               "line": 925
2026-06-23T09:38:03.0185956Z             },
2026-06-23T09:38:03.0186066Z             {
2026-06-23T09:38:03.0186200Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0186314Z               "line": 994
2026-06-23T09:38:03.0186419Z             }
2026-06-23T09:38:03.0186529Z           ]
2026-06-23T09:38:03.0186633Z         },
2026-06-23T09:38:03.0186744Z         "int": {
2026-06-23T09:38:03.0186863Z           "complete": true,
2026-06-23T09:38:03.0186972Z           "evidence": [
2026-06-23T09:38:03.0187078Z             {
2026-06-23T09:38:03.0187220Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T09:38:03.0187334Z               "line": 187
2026-06-23T09:38:03.0187445Z             },
2026-06-23T09:38:03.0187549Z             {
2026-06-23T09:38:03.0187688Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-23T09:38:03.0187797Z               "line": 348
2026-06-23T09:38:03.0187902Z             }
2026-06-23T09:38:03.0188003Z           ]
2026-06-23T09:38:03.0188112Z         },
2026-06-23T09:38:03.0188216Z         "unit": {
2026-06-23T09:38:03.0188325Z           "complete": true,
2026-06-23T09:38:03.0188434Z           "evidence": [
2026-06-23T09:38:03.0188528Z             {
2026-06-23T09:38:03.0188666Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0188777Z               "line": 1206
2026-06-23T09:38:03.0188881Z             },
2026-06-23T09:38:03.0189067Z             {
2026-06-23T09:38:03.0189190Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0189301Z               "line": 9510
2026-06-23T09:38:03.0189406Z             }
2026-06-23T09:38:03.0189515Z           ]
2026-06-23T09:38:03.0189616Z         }
2026-06-23T09:38:03.0189720Z       }
2026-06-23T09:38:03.0189829Z     },
2026-06-23T09:38:03.0189930Z     {
2026-06-23T09:38:03.0190063Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-23T09:38:03.0190270Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-23T09:38:03.0190392Z       "requiredStages": [
2026-06-23T09:38:03.0190497Z         "impl",
2026-06-23T09:38:03.0190608Z         "unit"
2026-06-23T09:38:03.0190702Z       ],
2026-06-23T09:38:03.0190807Z       "stages": {
2026-06-23T09:38:03.0190909Z         "doc": {
2026-06-23T09:38:03.0191026Z           "complete": false,
2026-06-23T09:38:03.0191130Z           "evidence": []
2026-06-23T09:38:03.0191231Z         },
2026-06-23T09:38:03.0191346Z         "impl": {
2026-06-23T09:38:03.0191454Z           "complete": true,
2026-06-23T09:38:03.0191565Z           "evidence": [
2026-06-23T09:38:03.0191675Z             {
2026-06-23T09:38:03.0191817Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0191923Z               "line": 262
2026-06-23T09:38:03.0192022Z             },
2026-06-23T09:38:03.0192127Z             {
2026-06-23T09:38:03.0192270Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0192379Z               "line": 307
2026-06-23T09:38:03.0192490Z             },
2026-06-23T09:38:03.0192694Z             {
2026-06-23T09:38:03.0192843Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0192947Z               "line": 319
2026-06-23T09:38:03.0193056Z             }
2026-06-23T09:38:03.0193163Z           ]
2026-06-23T09:38:03.0193257Z         },
2026-06-23T09:38:03.0193366Z         "int": {
2026-06-23T09:38:03.0193574Z           "complete": false,
2026-06-23T09:38:03.0193692Z           "evidence": []
2026-06-23T09:38:03.0193793Z         },
2026-06-23T09:38:03.0193899Z         "unit": {
2026-06-23T09:38:03.0194016Z           "complete": true,
2026-06-23T09:38:03.0194117Z           "evidence": [
2026-06-23T09:38:03.0194222Z             {
2026-06-23T09:38:03.0194359Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0194475Z               "line": 455
2026-06-23T09:38:03.0194570Z             },
2026-06-23T09:38:03.0194679Z             {
2026-06-23T09:38:03.0194809Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0194908Z               "line": 499
2026-06-23T09:38:03.0195013Z             }
2026-06-23T09:38:03.0195114Z           ]
2026-06-23T09:38:03.0195214Z         }
2026-06-23T09:38:03.0195313Z       }
2026-06-23T09:38:03.0195415Z     },
2026-06-23T09:38:03.0195518Z     {
2026-06-23T09:38:03.0195633Z       "id": "REQ-HOST-RUN-1",
2026-06-23T09:38:03.0198061Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-23T09:38:03.0198204Z       "requiredStages": [
2026-06-23T09:38:03.0198311Z         "impl",
2026-06-23T09:38:03.0198414Z         "unit",
2026-06-23T09:38:03.0198524Z         "int"
2026-06-23T09:38:03.0198626Z       ],
2026-06-23T09:38:03.0198733Z       "stages": {
2026-06-23T09:38:03.0198846Z         "doc": {
2026-06-23T09:38:03.0199045Z           "complete": false,
2026-06-23T09:38:03.0199149Z           "evidence": []
2026-06-23T09:38:03.0199255Z         },
2026-06-23T09:38:03.0199379Z         "impl": {
2026-06-23T09:38:03.0199503Z           "complete": true,
2026-06-23T09:38:03.0199608Z           "evidence": [
2026-06-23T09:38:03.0199708Z             {
2026-06-23T09:38:03.0199861Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0199975Z               "line": 30
2026-06-23T09:38:03.0200084Z             },
2026-06-23T09:38:03.0200190Z             {
2026-06-23T09:38:03.0200337Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0200447Z               "line": 76
2026-06-23T09:38:03.0200548Z             },
2026-06-23T09:38:03.0200652Z             {
2026-06-23T09:38:03.0200805Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0200914Z               "line": 181
2026-06-23T09:38:03.0201024Z             },
2026-06-23T09:38:03.0201120Z             {
2026-06-23T09:38:03.0201257Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0201367Z               "line": 1336
2026-06-23T09:38:03.0201474Z             }
2026-06-23T09:38:03.0201572Z           ]
2026-06-23T09:38:03.0201681Z         },
2026-06-23T09:38:03.0201781Z         "int": {
2026-06-23T09:38:03.0201882Z           "complete": true,
2026-06-23T09:38:03.0201996Z           "evidence": [
2026-06-23T09:38:03.0202091Z             {
2026-06-23T09:38:03.0202244Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0202352Z               "line": 290
2026-06-23T09:38:03.0202587Z             }
2026-06-23T09:38:03.0202697Z           ]
2026-06-23T09:38:03.0202797Z         },
2026-06-23T09:38:03.0202902Z         "unit": {
2026-06-23T09:38:03.0203011Z           "complete": true,
2026-06-23T09:38:03.0203126Z           "evidence": [
2026-06-23T09:38:03.0203226Z             {
2026-06-23T09:38:03.0203385Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0203583Z               "line": 235
2026-06-23T09:38:03.0203684Z             },
2026-06-23T09:38:03.0203794Z             {
2026-06-23T09:38:03.0203930Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0204041Z               "line": 302
2026-06-23T09:38:03.0204139Z             },
2026-06-23T09:38:03.0204247Z             {
2026-06-23T09:38:03.0204401Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0204510Z               "line": 425
2026-06-23T09:38:03.0204615Z             }
2026-06-23T09:38:03.0204721Z           ]
2026-06-23T09:38:03.0204825Z         }
2026-06-23T09:38:03.0204924Z       }
2026-06-23T09:38:03.0205030Z     },
2026-06-23T09:38:03.0205130Z     {
2026-06-23T09:38:03.0205239Z       "id": "REQ-HOST-RUN-2",
2026-06-23T09:38:03.0207016Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-23T09:38:03.0207138Z       "requiredStages": [
2026-06-23T09:38:03.0207243Z         "impl",
2026-06-23T09:38:03.0207359Z         "unit",
2026-06-23T09:38:03.0207462Z         "int"
2026-06-23T09:38:03.0207569Z       ],
2026-06-23T09:38:03.0207669Z       "stages": {
2026-06-23T09:38:03.0207777Z         "doc": {
2026-06-23T09:38:03.0207898Z           "complete": false,
2026-06-23T09:38:03.0208003Z           "evidence": []
2026-06-23T09:38:03.0208116Z         },
2026-06-23T09:38:03.0208217Z         "impl": {
2026-06-23T09:38:03.0208336Z           "complete": true,
2026-06-23T09:38:03.0208445Z           "evidence": [
2026-06-23T09:38:03.0208556Z             {
2026-06-23T09:38:03.0208707Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0208818Z               "line": 182
2026-06-23T09:38:03.0208922Z             },
2026-06-23T09:38:03.0209119Z             {
2026-06-23T09:38:03.0209261Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T09:38:03.0209369Z               "line": 113
2026-06-23T09:38:03.0209479Z             }
2026-06-23T09:38:03.0209592Z           ]
2026-06-23T09:38:03.0209691Z         },
2026-06-23T09:38:03.0209786Z         "int": {
2026-06-23T09:38:03.0209897Z           "complete": true,
2026-06-23T09:38:03.0210015Z           "evidence": [
2026-06-23T09:38:03.0210116Z             {
2026-06-23T09:38:03.0210268Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0210382Z               "line": 579
2026-06-23T09:38:03.0210488Z             }
2026-06-23T09:38:03.0210592Z           ]
2026-06-23T09:38:03.0210697Z         },
2026-06-23T09:38:03.0210803Z         "unit": {
2026-06-23T09:38:03.0210907Z           "complete": true,
2026-06-23T09:38:03.0211016Z           "evidence": [
2026-06-23T09:38:03.0211123Z             {
2026-06-23T09:38:03.0211259Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-23T09:38:03.0211375Z               "line": 86
2026-06-23T09:38:03.0211470Z             }
2026-06-23T09:38:03.0211574Z           ]
2026-06-23T09:38:03.0211676Z         }
2026-06-23T09:38:03.0211785Z       }
2026-06-23T09:38:03.0212009Z     },
2026-06-23T09:38:03.0212104Z     {
2026-06-23T09:38:03.0212227Z       "id": "REQ-INFRA-1",
2026-06-23T09:38:03.0212433Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-23T09:38:03.0212556Z       "requiredStages": [],
2026-06-23T09:38:03.0212656Z       "stages": {
2026-06-23T09:38:03.0212766Z         "doc": {
2026-06-23T09:38:03.0212991Z           "complete": false,
2026-06-23T09:38:03.0213105Z           "evidence": []
2026-06-23T09:38:03.0213209Z         },
2026-06-23T09:38:03.0213315Z         "impl": {
2026-06-23T09:38:03.0213433Z           "complete": false,
2026-06-23T09:38:03.0213543Z           "evidence": []
2026-06-23T09:38:03.0213649Z         },
2026-06-23T09:38:03.0213748Z         "int": {
2026-06-23T09:38:03.0213858Z           "complete": false,
2026-06-23T09:38:03.0213969Z           "evidence": []
2026-06-23T09:38:03.0214072Z         },
2026-06-23T09:38:03.0214182Z         "unit": {
2026-06-23T09:38:03.0214288Z           "complete": false,
2026-06-23T09:38:03.0214401Z           "evidence": []
2026-06-23T09:38:03.0214500Z         }
2026-06-23T09:38:03.0214591Z       }
2026-06-23T09:38:03.0214699Z     },
2026-06-23T09:38:03.0214798Z     {
2026-06-23T09:38:03.0214918Z       "id": "REQ-INST-1",
2026-06-23T09:38:03.0215103Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-23T09:38:03.0215223Z       "requiredStages": [],
2026-06-23T09:38:03.0215333Z       "stages": {
2026-06-23T09:38:03.0215432Z         "doc": {
2026-06-23T09:38:03.0215553Z           "complete": false,
2026-06-23T09:38:03.0215662Z           "evidence": []
2026-06-23T09:38:03.0215766Z         },
2026-06-23T09:38:03.0215868Z         "impl": {
2026-06-23T09:38:03.0215986Z           "complete": false,
2026-06-23T09:38:03.0216104Z           "evidence": []
2026-06-23T09:38:03.0216206Z         },
2026-06-23T09:38:03.0216315Z         "int": {
2026-06-23T09:38:03.0216424Z           "complete": false,
2026-06-23T09:38:03.0216539Z           "evidence": []
2026-06-23T09:38:03.0216639Z         },
2026-06-23T09:38:03.0216753Z         "unit": {
2026-06-23T09:38:03.0216859Z           "complete": false,
2026-06-23T09:38:03.0216972Z           "evidence": []
2026-06-23T09:38:03.0217083Z         }
2026-06-23T09:38:03.0217183Z       }
2026-06-23T09:38:03.0217287Z     },
2026-06-23T09:38:03.0217386Z     {
2026-06-23T09:38:03.0220101Z       "id": "REQ-INST-10",
2026-06-23T09:38:03.0220366Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-23T09:38:03.0220486Z       "requiredStages": [
2026-06-23T09:38:03.0220594Z         "impl",
2026-06-23T09:38:03.0220696Z         "unit"
2026-06-23T09:38:03.0220796Z       ],
2026-06-23T09:38:03.0220894Z       "stages": {
2026-06-23T09:38:03.0220991Z         "doc": {
2026-06-23T09:38:03.0221115Z           "complete": false,
2026-06-23T09:38:03.0221219Z           "evidence": []
2026-06-23T09:38:03.0221325Z         },
2026-06-23T09:38:03.0221429Z         "impl": {
2026-06-23T09:38:03.0221558Z           "complete": true,
2026-06-23T09:38:03.0221664Z           "evidence": [
2026-06-23T09:38:03.0221773Z             {
2026-06-23T09:38:03.0221926Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0222035Z               "line": 648
2026-06-23T09:38:03.0222135Z             },
2026-06-23T09:38:03.0222236Z             {
2026-06-23T09:38:03.0222392Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0222497Z               "line": 725
2026-06-23T09:38:03.0222598Z             },
2026-06-23T09:38:03.0222707Z             {
2026-06-23T09:38:03.0222843Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T09:38:03.0222954Z               "line": 13
2026-06-23T09:38:03.0223045Z             },
2026-06-23T09:38:03.0223144Z             {
2026-06-23T09:38:03.0223279Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T09:38:03.0223383Z               "line": 67
2026-06-23T09:38:03.0223487Z             },
2026-06-23T09:38:03.0223726Z             {
2026-06-23T09:38:03.0223865Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0223974Z               "line": 18
2026-06-23T09:38:03.0224083Z             },
2026-06-23T09:38:03.0224180Z             {
2026-06-23T09:38:03.0224308Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0224422Z               "line": 444
2026-06-23T09:38:03.0224627Z             }
2026-06-23T09:38:03.0224727Z           ]
2026-06-23T09:38:03.0224824Z         },
2026-06-23T09:38:03.0224928Z         "int": {
2026-06-23T09:38:03.0225041Z           "complete": false,
2026-06-23T09:38:03.0225156Z           "evidence": []
2026-06-23T09:38:03.0225259Z         },
2026-06-23T09:38:03.0225358Z         "unit": {
2026-06-23T09:38:03.0225473Z           "complete": true,
2026-06-23T09:38:03.0225579Z           "evidence": [
2026-06-23T09:38:03.0225678Z             {
2026-06-23T09:38:03.0225826Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0225940Z               "line": 932
2026-06-23T09:38:03.0226049Z             },
2026-06-23T09:38:03.0226150Z             {
2026-06-23T09:38:03.0226297Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0226403Z               "line": 1309
2026-06-23T09:38:03.0226508Z             },
2026-06-23T09:38:03.0226612Z             {
2026-06-23T09:38:03.0226757Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0226880Z               "line": 1320
2026-06-23T09:38:03.0226979Z             },
2026-06-23T09:38:03.0227086Z             {
2026-06-23T09:38:03.0227223Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0227333Z               "line": 1336
2026-06-23T09:38:03.0227433Z             },
2026-06-23T09:38:03.0227532Z             {
2026-06-23T09:38:03.0227681Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0227795Z               "line": 1352
2026-06-23T09:38:03.0227899Z             },
2026-06-23T09:38:03.0227999Z             {
2026-06-23T09:38:03.0228145Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0228258Z               "line": 1374
2026-06-23T09:38:03.0228355Z             },
2026-06-23T09:38:03.0228460Z             {
2026-06-23T09:38:03.0228592Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0228698Z               "line": 1679
2026-06-23T09:38:03.0228803Z             },
2026-06-23T09:38:03.0228907Z             {
2026-06-23T09:38:03.0229127Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T09:38:03.0229236Z               "line": 130
2026-06-23T09:38:03.0229347Z             },
2026-06-23T09:38:03.0229437Z             {
2026-06-23T09:38:03.0229575Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T09:38:03.0229680Z               "line": 167
2026-06-23T09:38:03.0229789Z             },
2026-06-23T09:38:03.0229895Z             {
2026-06-23T09:38:03.0230029Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T09:38:03.0230133Z               "line": 175
2026-06-23T09:38:03.0230234Z             },
2026-06-23T09:38:03.0230334Z             {
2026-06-23T09:38:03.0230465Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-23T09:38:03.0230570Z               "line": 183
2026-06-23T09:38:03.0230679Z             },
2026-06-23T09:38:03.0230768Z             {
2026-06-23T09:38:03.0230912Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0231022Z               "line": 896
2026-06-23T09:38:03.0231125Z             }
2026-06-23T09:38:03.0231227Z           ]
2026-06-23T09:38:03.0231322Z         }
2026-06-23T09:38:03.0231426Z       }
2026-06-23T09:38:03.0231522Z     },
2026-06-23T09:38:03.0231623Z     {
2026-06-23T09:38:03.0231732Z       "id": "REQ-INST-11",
2026-06-23T09:38:03.0231975Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-23T09:38:03.0232079Z       "requiredStages": [
2026-06-23T09:38:03.0232186Z         "impl",
2026-06-23T09:38:03.0232285Z         "unit"
2026-06-23T09:38:03.0232486Z       ],
2026-06-23T09:38:03.0232581Z       "stages": {
2026-06-23T09:38:03.0232676Z         "doc": {
2026-06-23T09:38:03.0232791Z           "complete": false,
2026-06-23T09:38:03.0232891Z           "evidence": []
2026-06-23T09:38:03.0232995Z         },
2026-06-23T09:38:03.0233101Z         "impl": {
2026-06-23T09:38:03.0233211Z           "complete": true,
2026-06-23T09:38:03.0233408Z           "evidence": [
2026-06-23T09:38:03.0233510Z             {
2026-06-23T09:38:03.0233656Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0233762Z               "line": 514
2026-06-23T09:38:03.0233867Z             },
2026-06-23T09:38:03.0233962Z             {
2026-06-23T09:38:03.0234116Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.0234230Z               "line": 297
2026-06-23T09:38:03.0234319Z             },
2026-06-23T09:38:03.0234420Z             {
2026-06-23T09:38:03.0234558Z               "path": "crates/spt-store/src/rename.rs",
2026-06-23T09:38:03.0234653Z               "line": 59
2026-06-23T09:38:03.0234755Z             },
2026-06-23T09:38:03.0234849Z             {
2026-06-23T09:38:03.0234982Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0235084Z               "line": 5946
2026-06-23T09:38:03.0235187Z             },
2026-06-23T09:38:03.0235292Z             {
2026-06-23T09:38:03.0235423Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0235535Z               "line": 8202
2026-06-23T09:38:03.0235620Z             }
2026-06-23T09:38:03.0235725Z           ]
2026-06-23T09:38:03.0235824Z         },
2026-06-23T09:38:03.0235923Z         "int": {
2026-06-23T09:38:03.0236033Z           "complete": false,
2026-06-23T09:38:03.0236143Z           "evidence": []
2026-06-23T09:38:03.0236252Z         },
2026-06-23T09:38:03.0236357Z         "unit": {
2026-06-23T09:38:03.0236477Z           "complete": true,
2026-06-23T09:38:03.0236581Z           "evidence": [
2026-06-23T09:38:03.0236673Z             {
2026-06-23T09:38:03.0236820Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0236939Z               "line": 1479
2026-06-23T09:38:03.0237030Z             },
2026-06-23T09:38:03.0237130Z             {
2026-06-23T09:38:03.0237273Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0237382Z               "line": 1512
2026-06-23T09:38:03.0237487Z             },
2026-06-23T09:38:03.0237593Z             {
2026-06-23T09:38:03.0237745Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.0237850Z               "line": 527
2026-06-23T09:38:03.0237946Z             },
2026-06-23T09:38:03.0238054Z             {
2026-06-23T09:38:03.0238184Z               "path": "crates/spt-store/src/rename.rs",
2026-06-23T09:38:03.0238295Z               "line": 160
2026-06-23T09:38:03.0238402Z             },
2026-06-23T09:38:03.0238501Z             {
2026-06-23T09:38:03.0238640Z               "path": "crates/spt-store/src/rename.rs",
2026-06-23T09:38:03.0238752Z               "line": 190
2026-06-23T09:38:03.0238857Z             },
2026-06-23T09:38:03.0239048Z             {
2026-06-23T09:38:03.0239186Z               "path": "crates/spt-store/src/rename.rs",
2026-06-23T09:38:03.0239282Z               "line": 225
2026-06-23T09:38:03.0239386Z             },
2026-06-23T09:38:03.0239486Z             {
2026-06-23T09:38:03.0239620Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0239729Z               "line": 9388
2026-06-23T09:38:03.0239830Z             }
2026-06-23T09:38:03.0239931Z           ]
2026-06-23T09:38:03.0240030Z         }
2026-06-23T09:38:03.0240130Z       }
2026-06-23T09:38:03.0240226Z     },
2026-06-23T09:38:03.0240326Z     {
2026-06-23T09:38:03.0240435Z       "id": "REQ-INST-12",
2026-06-23T09:38:03.0240750Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-23T09:38:03.0240856Z       "requiredStages": [
2026-06-23T09:38:03.0240960Z         "impl",
2026-06-23T09:38:03.0241192Z         "unit"
2026-06-23T09:38:03.0241295Z       ],
2026-06-23T09:38:03.0241395Z       "stages": {
2026-06-23T09:38:03.0241500Z         "doc": {
2026-06-23T09:38:03.0241615Z           "complete": false,
2026-06-23T09:38:03.0241724Z           "evidence": []
2026-06-23T09:38:03.0241820Z         },
2026-06-23T09:38:03.0241921Z         "impl": {
2026-06-23T09:38:03.0242135Z           "complete": true,
2026-06-23T09:38:03.0242240Z           "evidence": [
2026-06-23T09:38:03.0242334Z             {
2026-06-23T09:38:03.0242483Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0242597Z               "line": 566
2026-06-23T09:38:03.0242697Z             },
2026-06-23T09:38:03.0242798Z             {
2026-06-23T09:38:03.0242945Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0243051Z               "line": 659
2026-06-23T09:38:03.0243155Z             },
2026-06-23T09:38:03.0243260Z             {
2026-06-23T09:38:03.0243399Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0243522Z               "line": 739
2026-06-23T09:38:03.0243627Z             },
2026-06-23T09:38:03.0243723Z             {
2026-06-23T09:38:03.0243860Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0243964Z               "line": 96
2026-06-23T09:38:03.0244065Z             },
2026-06-23T09:38:03.0244165Z             {
2026-06-23T09:38:03.0244298Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0244409Z               "line": 269
2026-06-23T09:38:03.0244513Z             },
2026-06-23T09:38:03.0244613Z             {
2026-06-23T09:38:03.0244756Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T09:38:03.0244865Z               "line": 148
2026-06-23T09:38:03.0244966Z             }
2026-06-23T09:38:03.0245067Z           ]
2026-06-23T09:38:03.0245161Z         },
2026-06-23T09:38:03.0245266Z         "int": {
2026-06-23T09:38:03.0245377Z           "complete": false,
2026-06-23T09:38:03.0245495Z           "evidence": []
2026-06-23T09:38:03.0245591Z         },
2026-06-23T09:38:03.0245696Z         "unit": {
2026-06-23T09:38:03.0245810Z           "complete": true,
2026-06-23T09:38:03.0245920Z           "evidence": [
2026-06-23T09:38:03.0246025Z             {
2026-06-23T09:38:03.0246152Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0246271Z               "line": 1554
2026-06-23T09:38:03.0246361Z             },
2026-06-23T09:38:03.0246464Z             {
2026-06-23T09:38:03.0246608Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0246718Z               "line": 1577
2026-06-23T09:38:03.0246822Z             },
2026-06-23T09:38:03.0246917Z             {
2026-06-23T09:38:03.0247070Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0247174Z               "line": 1614
2026-06-23T09:38:03.0247271Z             },
2026-06-23T09:38:03.0247371Z             {
2026-06-23T09:38:03.0247509Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0247623Z               "line": 457
2026-06-23T09:38:03.0247728Z             },
2026-06-23T09:38:03.0247828Z             {
2026-06-23T09:38:03.0247976Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T09:38:03.0248081Z               "line": 185
2026-06-23T09:38:03.0248187Z             },
2026-06-23T09:38:03.0248290Z             {
2026-06-23T09:38:03.0248443Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T09:38:03.0248549Z               "line": 206
2026-06-23T09:38:03.0248652Z             },
2026-06-23T09:38:03.0248758Z             {
2026-06-23T09:38:03.0248902Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T09:38:03.0249085Z               "line": 232
2026-06-23T09:38:03.0249186Z             }
2026-06-23T09:38:03.0249284Z           ]
2026-06-23T09:38:03.0249383Z         }
2026-06-23T09:38:03.0249484Z       }
2026-06-23T09:38:03.0249589Z     },
2026-06-23T09:38:03.0249785Z     {
2026-06-23T09:38:03.0249904Z       "id": "REQ-INST-13",
2026-06-23T09:38:03.0250105Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-23T09:38:03.0250224Z       "requiredStages": [
2026-06-23T09:38:03.0250323Z         "impl",
2026-06-23T09:38:03.0250429Z         "unit"
2026-06-23T09:38:03.0250519Z       ],
2026-06-23T09:38:03.0250720Z       "stages": {
2026-06-23T09:38:03.0250829Z         "doc": {
2026-06-23T09:38:03.0250938Z           "complete": false,
2026-06-23T09:38:03.0251049Z           "evidence": []
2026-06-23T09:38:03.0251149Z         },
2026-06-23T09:38:03.0251253Z         "impl": {
2026-06-23T09:38:03.0251359Z           "complete": true,
2026-06-23T09:38:03.0251464Z           "evidence": [
2026-06-23T09:38:03.0251572Z             {
2026-06-23T09:38:03.0251710Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0251818Z               "line": 100
2026-06-23T09:38:03.0251917Z             },
2026-06-23T09:38:03.0252022Z             {
2026-06-23T09:38:03.0252156Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T09:38:03.0252255Z               "line": 171
2026-06-23T09:38:03.0252362Z             }
2026-06-23T09:38:03.0252457Z           ]
2026-06-23T09:38:03.0252556Z         },
2026-06-23T09:38:03.0252657Z         "int": {
2026-06-23T09:38:03.0252767Z           "complete": false,
2026-06-23T09:38:03.0252876Z           "evidence": []
2026-06-23T09:38:03.0252977Z         },
2026-06-23T09:38:03.0253081Z         "unit": {
2026-06-23T09:38:03.0253185Z           "complete": true,
2026-06-23T09:38:03.0253296Z           "evidence": [
2026-06-23T09:38:03.0253396Z             {
2026-06-23T09:38:03.0253543Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T09:38:03.0253654Z               "line": 261
2026-06-23T09:38:03.0253758Z             },
2026-06-23T09:38:03.0253862Z             {
2026-06-23T09:38:03.0253988Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-23T09:38:03.0254096Z               "line": 279
2026-06-23T09:38:03.0254202Z             }
2026-06-23T09:38:03.0254307Z           ]
2026-06-23T09:38:03.0254410Z         }
2026-06-23T09:38:03.0254510Z       }
2026-06-23T09:38:03.0254620Z     },
2026-06-23T09:38:03.0254716Z     {
2026-06-23T09:38:03.0254829Z       "id": "REQ-INST-14",
2026-06-23T09:38:03.0255226Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-23T09:38:03.0255345Z       "requiredStages": [
2026-06-23T09:38:03.0255439Z         "doc",
2026-06-23T09:38:03.0255546Z         "impl",
2026-06-23T09:38:03.0255650Z         "unit"
2026-06-23T09:38:03.0255745Z       ],
2026-06-23T09:38:03.0255846Z       "stages": {
2026-06-23T09:38:03.0255946Z         "doc": {
2026-06-23T09:38:03.0256055Z           "complete": true,
2026-06-23T09:38:03.0256156Z           "evidence": [
2026-06-23T09:38:03.0256256Z             {
2026-06-23T09:38:03.0256380Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0256490Z               "line": 606
2026-06-23T09:38:03.0256595Z             },
2026-06-23T09:38:03.0256693Z             {
2026-06-23T09:38:03.0256817Z               "path": "docs/STORAGE.md",
2026-06-23T09:38:03.0256931Z               "line": 49
2026-06-23T09:38:03.0257029Z             }
2026-06-23T09:38:03.0257130Z           ]
2026-06-23T09:38:03.0257230Z         },
2026-06-23T09:38:03.0257334Z         "impl": {
2026-06-23T09:38:03.0257444Z           "complete": true,
2026-06-23T09:38:03.0257549Z           "evidence": [
2026-06-23T09:38:03.0257653Z             {
2026-06-23T09:38:03.0257812Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0257926Z               "line": 410
2026-06-23T09:38:03.0258030Z             },
2026-06-23T09:38:03.0258136Z             {
2026-06-23T09:38:03.0258279Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0258383Z               "line": 367
2026-06-23T09:38:03.0258489Z             },
2026-06-23T09:38:03.0258665Z             {
2026-06-23T09:38:03.0258809Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.0258918Z               "line": 293
2026-06-23T09:38:03.0259109Z             },
2026-06-23T09:38:03.0259217Z             {
2026-06-23T09:38:03.0259343Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0259453Z               "line": 1926
2026-06-23T09:38:03.0259650Z             }
2026-06-23T09:38:03.0259756Z           ]
2026-06-23T09:38:03.0259849Z         },
2026-06-23T09:38:03.0259953Z         "int": {
2026-06-23T09:38:03.0260059Z           "complete": false,
2026-06-23T09:38:03.0260173Z           "evidence": []
2026-06-23T09:38:03.0260273Z         },
2026-06-23T09:38:03.0260374Z         "unit": {
2026-06-23T09:38:03.0260483Z           "complete": true,
2026-06-23T09:38:03.0260588Z           "evidence": [
2026-06-23T09:38:03.0260694Z             {
2026-06-23T09:38:03.0260849Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0260955Z               "line": 1163
2026-06-23T09:38:03.0261065Z             },
2026-06-23T09:38:03.0261169Z             {
2026-06-23T09:38:03.0261309Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0261417Z               "line": 944
2026-06-23T09:38:03.0261522Z             },
2026-06-23T09:38:03.0261624Z             {
2026-06-23T09:38:03.0261779Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0261895Z               "line": 1205
2026-06-23T09:38:03.0261996Z             },
2026-06-23T09:38:03.0262099Z             {
2026-06-23T09:38:03.0262237Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.0262345Z               "line": 659
2026-06-23T09:38:03.0262449Z             },
2026-06-23T09:38:03.0262549Z             {
2026-06-23T09:38:03.0262674Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0262778Z               "line": 9464
2026-06-23T09:38:03.0262883Z             }
2026-06-23T09:38:03.0262979Z           ]
2026-06-23T09:38:03.0263087Z         }
2026-06-23T09:38:03.0263193Z       }
2026-06-23T09:38:03.0263293Z     },
2026-06-23T09:38:03.0263393Z     {
2026-06-23T09:38:03.0263503Z       "id": "REQ-INST-15",
2026-06-23T09:38:03.0264252Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-23T09:38:03.0264371Z       "requiredStages": [
2026-06-23T09:38:03.0264486Z         "doc",
2026-06-23T09:38:03.0264599Z         "impl",
2026-06-23T09:38:03.0264700Z         "unit"
2026-06-23T09:38:03.0264805Z       ],
2026-06-23T09:38:03.0264905Z       "stages": {
2026-06-23T09:38:03.0265013Z         "doc": {
2026-06-23T09:38:03.0265127Z           "complete": true,
2026-06-23T09:38:03.0265243Z           "evidence": [
2026-06-23T09:38:03.0265351Z             {
2026-06-23T09:38:03.0265557Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-23T09:38:03.0265666Z               "line": 3
2026-06-23T09:38:03.0265762Z             }
2026-06-23T09:38:03.0265867Z           ]
2026-06-23T09:38:03.0265971Z         },
2026-06-23T09:38:03.0266076Z         "impl": {
2026-06-23T09:38:03.0266196Z           "complete": true,
2026-06-23T09:38:03.0266305Z           "evidence": [
2026-06-23T09:38:03.0266406Z             {
2026-06-23T09:38:03.0266563Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0266672Z               "line": 353
2026-06-23T09:38:03.0266773Z             },
2026-06-23T09:38:03.0266887Z             {
2026-06-23T09:38:03.0267026Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0267131Z               "line": 60
2026-06-23T09:38:03.0267239Z             },
2026-06-23T09:38:03.0267338Z             {
2026-06-23T09:38:03.0267495Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.0267599Z               "line": 368
2026-06-23T09:38:03.0267800Z             },
2026-06-23T09:38:03.0267908Z             {
2026-06-23T09:38:03.0268057Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.0268171Z               "line": 417
2026-06-23T09:38:03.0268271Z             },
2026-06-23T09:38:03.0268377Z             {
2026-06-23T09:38:03.0268605Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0268716Z               "line": 19
2026-06-23T09:38:03.0268820Z             },
2026-06-23T09:38:03.0268920Z             {
2026-06-23T09:38:03.0269149Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0269254Z               "line": 70
2026-06-23T09:38:03.0269350Z             },
2026-06-23T09:38:03.0269458Z             {
2026-06-23T09:38:03.0269588Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0269698Z               "line": 96
2026-06-23T09:38:03.0269797Z             },
2026-06-23T09:38:03.0269903Z             {
2026-06-23T09:38:03.0270036Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0270144Z               "line": 121
2026-06-23T09:38:03.0270254Z             },
2026-06-23T09:38:03.0270353Z             {
2026-06-23T09:38:03.0270485Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0270590Z               "line": 172
2026-06-23T09:38:03.0270696Z             },
2026-06-23T09:38:03.0270795Z             {
2026-06-23T09:38:03.0270939Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0271039Z               "line": 178
2026-06-23T09:38:03.0271138Z             },
2026-06-23T09:38:03.0271244Z             {
2026-06-23T09:38:03.0271373Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0271486Z               "line": 1818
2026-06-23T09:38:03.0271578Z             }
2026-06-23T09:38:03.0271672Z           ]
2026-06-23T09:38:03.0271772Z         },
2026-06-23T09:38:03.0271879Z         "int": {
2026-06-23T09:38:03.0271977Z           "complete": false,
2026-06-23T09:38:03.0272092Z           "evidence": []
2026-06-23T09:38:03.0272193Z         },
2026-06-23T09:38:03.0272297Z         "unit": {
2026-06-23T09:38:03.0272402Z           "complete": true,
2026-06-23T09:38:03.0272518Z           "evidence": [
2026-06-23T09:38:03.0272621Z             {
2026-06-23T09:38:03.0272777Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.0272883Z               "line": 577
2026-06-23T09:38:03.0272985Z             },
2026-06-23T09:38:03.0273084Z             {
2026-06-23T09:38:03.0273234Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.0273342Z               "line": 638
2026-06-23T09:38:03.0273438Z             },
2026-06-23T09:38:03.0273544Z             {
2026-06-23T09:38:03.0273676Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0273787Z               "line": 213
2026-06-23T09:38:03.0273891Z             },
2026-06-23T09:38:03.0274000Z             {
2026-06-23T09:38:03.0274131Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0274239Z               "line": 249
2026-06-23T09:38:03.0274344Z             },
2026-06-23T09:38:03.0274446Z             {
2026-06-23T09:38:03.0274573Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0274673Z               "line": 262
2026-06-23T09:38:03.0274779Z             },
2026-06-23T09:38:03.0274887Z             {
2026-06-23T09:38:03.0275012Z               "path": "crates/spt-store/src/home.rs",
2026-06-23T09:38:03.0275122Z               "line": 338
2026-06-23T09:38:03.0275221Z             },
2026-06-23T09:38:03.0275332Z             {
2026-06-23T09:38:03.0275465Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0275574Z               "line": 690
2026-06-23T09:38:03.0275683Z             },
2026-06-23T09:38:03.0275784Z             {
2026-06-23T09:38:03.0275921Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0276031Z               "line": 9401
2026-06-23T09:38:03.0276236Z             },
2026-06-23T09:38:03.0276332Z             {
2026-06-23T09:38:03.0276461Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0276584Z               "line": 11375
2026-06-23T09:38:03.0276685Z             }
2026-06-23T09:38:03.0276794Z           ]
2026-06-23T09:38:03.0276894Z         }
2026-06-23T09:38:03.0276986Z       }
2026-06-23T09:38:03.0277190Z     },
2026-06-23T09:38:03.0277286Z     {
2026-06-23T09:38:03.0277409Z       "id": "REQ-INST-2",
2026-06-23T09:38:03.0277557Z       "title": "Per-node files, synced Psyche mind",
2026-06-23T09:38:03.0277668Z       "requiredStages": [
2026-06-23T09:38:03.0277771Z         "impl",
2026-06-23T09:38:03.0277880Z         "unit"
2026-06-23T09:38:03.0277989Z       ],
2026-06-23T09:38:03.0278097Z       "stages": {
2026-06-23T09:38:03.0278202Z         "doc": {
2026-06-23T09:38:03.0278307Z           "complete": false,
2026-06-23T09:38:03.0278426Z           "evidence": []
2026-06-23T09:38:03.0278526Z         },
2026-06-23T09:38:03.0278637Z         "impl": {
2026-06-23T09:38:03.0278751Z           "complete": true,
2026-06-23T09:38:03.0278860Z           "evidence": [
2026-06-23T09:38:03.0279046Z             {
2026-06-23T09:38:03.0279199Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0279304Z               "line": 197
2026-06-23T09:38:03.0279409Z             },
2026-06-23T09:38:03.0279518Z             {
2026-06-23T09:38:03.0279661Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:03.0279770Z               "line": 28
2026-06-23T09:38:03.0279877Z             },
2026-06-23T09:38:03.0279976Z             {
2026-06-23T09:38:03.0280104Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:03.0280206Z               "line": 74
2026-06-23T09:38:03.0280314Z             },
2026-06-23T09:38:03.0280419Z             {
2026-06-23T09:38:03.0280554Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:03.0280657Z               "line": 96
2026-06-23T09:38:03.0280761Z             },
2026-06-23T09:38:03.0280871Z             {
2026-06-23T09:38:03.0281002Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T09:38:03.0281107Z               "line": 86
2026-06-23T09:38:03.0281213Z             },
2026-06-23T09:38:03.0281317Z             {
2026-06-23T09:38:03.0281456Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-23T09:38:03.0281560Z               "line": 118
2026-06-23T09:38:03.0281674Z             }
2026-06-23T09:38:03.0281776Z           ]
2026-06-23T09:38:03.0281875Z         },
2026-06-23T09:38:03.0281980Z         "int": {
2026-06-23T09:38:03.0282080Z           "complete": false,
2026-06-23T09:38:03.0282190Z           "evidence": []
2026-06-23T09:38:03.0282295Z         },
2026-06-23T09:38:03.0282400Z         "unit": {
2026-06-23T09:38:03.0282515Z           "complete": true,
2026-06-23T09:38:03.0282628Z           "evidence": [
2026-06-23T09:38:03.0282735Z             {
2026-06-23T09:38:03.0282867Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-23T09:38:03.0282981Z               "line": 250
2026-06-23T09:38:03.0283078Z             },
2026-06-23T09:38:03.0283182Z             {
2026-06-23T09:38:03.0283318Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T09:38:03.0283424Z               "line": 280
2026-06-23T09:38:03.0283531Z             }
2026-06-23T09:38:03.0283626Z           ]
2026-06-23T09:38:03.0283736Z         }
2026-06-23T09:38:03.0283832Z       }
2026-06-23T09:38:03.0283936Z     },
2026-06-23T09:38:03.0284027Z     {
2026-06-23T09:38:03.0284137Z       "id": "REQ-INST-3",
2026-06-23T09:38:03.0284323Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-23T09:38:03.0284427Z       "requiredStages": [
2026-06-23T09:38:03.0284532Z         "doc",
2026-06-23T09:38:03.0284638Z         "impl",
2026-06-23T09:38:03.0284747Z         "unit"
2026-06-23T09:38:03.0284851Z       ],
2026-06-23T09:38:03.0284957Z       "stages": {
2026-06-23T09:38:03.0285062Z         "doc": {
2026-06-23T09:38:03.0285176Z           "complete": true,
2026-06-23T09:38:03.0285386Z           "evidence": [
2026-06-23T09:38:03.0285481Z             {
2026-06-23T09:38:03.0285625Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-23T09:38:03.0285729Z               "line": 3
2026-06-23T09:38:03.0285829Z             }
2026-06-23T09:38:03.0285935Z           ]
2026-06-23T09:38:03.0286035Z         },
2026-06-23T09:38:03.0286234Z         "impl": {
2026-06-23T09:38:03.0286349Z           "complete": true,
2026-06-23T09:38:03.0286453Z           "evidence": [
2026-06-23T09:38:03.0286548Z             {
2026-06-23T09:38:03.0286692Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:03.0286801Z               "line": 60
2026-06-23T09:38:03.0286902Z             },
2026-06-23T09:38:03.0287011Z             {
2026-06-23T09:38:03.0287158Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0287269Z               "line": 480
2026-06-23T09:38:03.0287369Z             },
2026-06-23T09:38:03.0287477Z             {
2026-06-23T09:38:03.0287631Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0287740Z               "line": 452
2026-06-23T09:38:03.0287841Z             },
2026-06-23T09:38:03.0287931Z             {
2026-06-23T09:38:03.0288074Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0288180Z               "line": 592
2026-06-23T09:38:03.0288284Z             },
2026-06-23T09:38:03.0288383Z             {
2026-06-23T09:38:03.0288522Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0288625Z               "line": 626
2026-06-23T09:38:03.0288728Z             },
2026-06-23T09:38:03.0288834Z             {
2026-06-23T09:38:03.0289048Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-23T09:38:03.0289158Z               "line": 74
2026-06-23T09:38:03.0289263Z             },
2026-06-23T09:38:03.0289363Z             {
2026-06-23T09:38:03.0289521Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0289625Z               "line": 234
2026-06-23T09:38:03.0289730Z             },
2026-06-23T09:38:03.0289826Z             {
2026-06-23T09:38:03.0289978Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0290083Z               "line": 396
2026-06-23T09:38:03.0290188Z             },
2026-06-23T09:38:03.0290293Z             {
2026-06-23T09:38:03.0290437Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0290546Z               "line": 45
2026-06-23T09:38:03.0290646Z             },
2026-06-23T09:38:03.0290747Z             {
2026-06-23T09:38:03.0290879Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0290994Z               "line": 114
2026-06-23T09:38:03.0291100Z             },
2026-06-23T09:38:03.0291198Z             {
2026-06-23T09:38:03.0291331Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0291436Z               "line": 152
2026-06-23T09:38:03.0291539Z             },
2026-06-23T09:38:03.0291648Z             {
2026-06-23T09:38:03.0291783Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0291896Z               "line": 168
2026-06-23T09:38:03.0292001Z             },
2026-06-23T09:38:03.0292112Z             {
2026-06-23T09:38:03.0292253Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0292355Z               "line": 178
2026-06-23T09:38:03.0292469Z             },
2026-06-23T09:38:03.0292573Z             {
2026-06-23T09:38:03.0292717Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0292822Z               "line": 210
2026-06-23T09:38:03.0292931Z             },
2026-06-23T09:38:03.0293037Z             {
2026-06-23T09:38:03.0293174Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0293280Z               "line": 287
2026-06-23T09:38:03.0293385Z             },
2026-06-23T09:38:03.0293489Z             {
2026-06-23T09:38:03.0293629Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0293841Z               "line": 311
2026-06-23T09:38:03.0293950Z             },
2026-06-23T09:38:03.0294054Z             {
2026-06-23T09:38:03.0294186Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0294282Z               "line": 389
2026-06-23T09:38:03.0294388Z             },
2026-06-23T09:38:03.0294491Z             {
2026-06-23T09:38:03.0294731Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0294844Z               "line": 438
2026-06-23T09:38:03.0294950Z             },
2026-06-23T09:38:03.0295050Z             {
2026-06-23T09:38:03.0295188Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-23T09:38:03.0295298Z               "line": 37
2026-06-23T09:38:03.0295393Z             },
2026-06-23T09:38:03.0295493Z             {
2026-06-23T09:38:03.0295646Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0295755Z               "line": 62
2026-06-23T09:38:03.0295861Z             },
2026-06-23T09:38:03.0298272Z             {
2026-06-23T09:38:03.0298459Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.0298572Z               "line": 279
2026-06-23T09:38:03.0298668Z             },
2026-06-23T09:38:03.0298769Z             {
2026-06-23T09:38:03.0298901Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0299096Z               "line": 2202
2026-06-23T09:38:03.0299208Z             }
2026-06-23T09:38:03.0299312Z           ]
2026-06-23T09:38:03.0299413Z         },
2026-06-23T09:38:03.0299522Z         "int": {
2026-06-23T09:38:03.0299636Z           "complete": false,
2026-06-23T09:38:03.0299747Z           "evidence": []
2026-06-23T09:38:03.0299851Z         },
2026-06-23T09:38:03.0299956Z         "unit": {
2026-06-23T09:38:03.0300067Z           "complete": true,
2026-06-23T09:38:03.0300171Z           "evidence": [
2026-06-23T09:38:03.0300270Z             {
2026-06-23T09:38:03.0300424Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:03.0300538Z               "line": 360
2026-06-23T09:38:03.0300634Z             },
2026-06-23T09:38:03.0300729Z             {
2026-06-23T09:38:03.0300882Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0300993Z               "line": 1048
2026-06-23T09:38:03.0301101Z             },
2026-06-23T09:38:03.0301211Z             {
2026-06-23T09:38:03.0301359Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0301463Z               "line": 1105
2026-06-23T09:38:03.0301559Z             },
2026-06-23T09:38:03.0301660Z             {
2026-06-23T09:38:03.0301820Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:03.0301929Z               "line": 889
2026-06-23T09:38:03.0302033Z             },
2026-06-23T09:38:03.0302132Z             {
2026-06-23T09:38:03.0302281Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:03.0302395Z               "line": 1014
2026-06-23T09:38:03.0302499Z             },
2026-06-23T09:38:03.0302610Z             {
2026-06-23T09:38:03.0302766Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0302871Z               "line": 1264
2026-06-23T09:38:03.0302972Z             },
2026-06-23T09:38:03.0303072Z             {
2026-06-23T09:38:03.0303225Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0303334Z               "line": 1405
2026-06-23T09:38:03.0303439Z             },
2026-06-23T09:38:03.0303530Z             {
2026-06-23T09:38:03.0303673Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0303777Z               "line": 449
2026-06-23T09:38:03.0303883Z             },
2026-06-23T09:38:03.0303982Z             {
2026-06-23T09:38:03.0304126Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0304236Z               "line": 485
2026-06-23T09:38:03.0304335Z             },
2026-06-23T09:38:03.0304434Z             {
2026-06-23T09:38:03.0304563Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0304804Z               "line": 540
2026-06-23T09:38:03.0304909Z             },
2026-06-23T09:38:03.0305018Z             {
2026-06-23T09:38:03.0305143Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0305257Z               "line": 697
2026-06-23T09:38:03.0305361Z             },
2026-06-23T09:38:03.0305453Z             {
2026-06-23T09:38:03.0305714Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0305815Z               "line": 931
2026-06-23T09:38:03.0305924Z             },
2026-06-23T09:38:03.0306029Z             {
2026-06-23T09:38:03.0306168Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0306278Z               "line": 945
2026-06-23T09:38:03.0306373Z             },
2026-06-23T09:38:03.0306474Z             {
2026-06-23T09:38:03.0306621Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0306732Z               "line": 1290
2026-06-23T09:38:03.0306840Z             },
2026-06-23T09:38:03.0306945Z             {
2026-06-23T09:38:03.0307089Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.0307193Z               "line": 609
2026-06-23T09:38:03.0307296Z             },
2026-06-23T09:38:03.0307402Z             {
2026-06-23T09:38:03.0307526Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0307625Z               "line": 9425
2026-06-23T09:38:03.0307726Z             }
2026-06-23T09:38:03.0307832Z           ]
2026-06-23T09:38:03.0307930Z         }
2026-06-23T09:38:03.0308032Z       }
2026-06-23T09:38:03.0308136Z     },
2026-06-23T09:38:03.0308235Z     {
2026-06-23T09:38:03.0308346Z       "id": "REQ-INST-4",
2026-06-23T09:38:03.0308536Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-23T09:38:03.0308652Z       "requiredStages": [
2026-06-23T09:38:03.0308751Z         "impl",
2026-06-23T09:38:03.0308846Z         "unit"
2026-06-23T09:38:03.0309024Z       ],
2026-06-23T09:38:03.0309127Z       "stages": {
2026-06-23T09:38:03.0309223Z         "doc": {
2026-06-23T09:38:03.0309329Z           "complete": false,
2026-06-23T09:38:03.0309442Z           "evidence": []
2026-06-23T09:38:03.0309541Z         },
2026-06-23T09:38:03.0309646Z         "impl": {
2026-06-23T09:38:03.0309754Z           "complete": true,
2026-06-23T09:38:03.0309863Z           "evidence": [
2026-06-23T09:38:03.0309969Z             {
2026-06-23T09:38:03.0310130Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0310245Z               "line": 593
2026-06-23T09:38:03.0310346Z             },
2026-06-23T09:38:03.0310449Z             {
2026-06-23T09:38:03.0310599Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0310698Z               "line": 202
2026-06-23T09:38:03.0310798Z             },
2026-06-23T09:38:03.0310899Z             {
2026-06-23T09:38:03.0311037Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0311141Z               "line": 234
2026-06-23T09:38:03.0311252Z             },
2026-06-23T09:38:03.0311356Z             {
2026-06-23T09:38:03.0311489Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0311591Z               "line": 274
2026-06-23T09:38:03.0311684Z             }
2026-06-23T09:38:03.0311785Z           ]
2026-06-23T09:38:03.0311887Z         },
2026-06-23T09:38:03.0311989Z         "int": {
2026-06-23T09:38:03.0312105Z           "complete": false,
2026-06-23T09:38:03.0312216Z           "evidence": []
2026-06-23T09:38:03.0312318Z         },
2026-06-23T09:38:03.0312422Z         "unit": {
2026-06-23T09:38:03.0312538Z           "complete": true,
2026-06-23T09:38:03.0312649Z           "evidence": [
2026-06-23T09:38:03.0312754Z             {
2026-06-23T09:38:03.0312903Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0313016Z               "line": 1100
2026-06-23T09:38:03.0313126Z             },
2026-06-23T09:38:03.0313227Z             {
2026-06-23T09:38:03.0313369Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0313589Z               "line": 561
2026-06-23T09:38:03.0313689Z             },
2026-06-23T09:38:03.0313785Z             {
2026-06-23T09:38:03.0313918Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0314022Z               "line": 668
2026-06-23T09:38:03.0314124Z             },
2026-06-23T09:38:03.0314323Z             {
2026-06-23T09:38:03.0314462Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0314576Z               "line": 750
2026-06-23T09:38:03.0314681Z             }
2026-06-23T09:38:03.0314777Z           ]
2026-06-23T09:38:03.0314881Z         }
2026-06-23T09:38:03.0314970Z       }
2026-06-23T09:38:03.0315071Z     },
2026-06-23T09:38:03.0315170Z     {
2026-06-23T09:38:03.0315273Z       "id": "REQ-INST-5",
2026-06-23T09:38:03.0315489Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-23T09:38:03.0315592Z       "requiredStages": [
2026-06-23T09:38:03.0315708Z         "impl",
2026-06-23T09:38:03.0315812Z         "unit",
2026-06-23T09:38:03.0315921Z         "int"
2026-06-23T09:38:03.0316023Z       ],
2026-06-23T09:38:03.0316127Z       "stages": {
2026-06-23T09:38:03.0316236Z         "doc": {
2026-06-23T09:38:03.0316343Z           "complete": false,
2026-06-23T09:38:03.0316451Z           "evidence": []
2026-06-23T09:38:03.0316551Z         },
2026-06-23T09:38:03.0316667Z         "impl": {
2026-06-23T09:38:03.0316780Z           "complete": true,
2026-06-23T09:38:03.0316894Z           "evidence": [
2026-06-23T09:38:03.0316996Z             {
2026-06-23T09:38:03.0317147Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-23T09:38:03.0317262Z               "line": 85
2026-06-23T09:38:03.0317354Z             },
2026-06-23T09:38:03.0317452Z             {
2026-06-23T09:38:03.0317587Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0317697Z               "line": 68
2026-06-23T09:38:03.0317804Z             },
2026-06-23T09:38:03.0317904Z             {
2026-06-23T09:38:03.0318034Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0318147Z               "line": 99
2026-06-23T09:38:03.0318248Z             },
2026-06-23T09:38:03.0318339Z             {
2026-06-23T09:38:03.0318471Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0318587Z               "line": 183
2026-06-23T09:38:03.0318682Z             },
2026-06-23T09:38:03.0318786Z             {
2026-06-23T09:38:03.0318916Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0319110Z               "line": 314
2026-06-23T09:38:03.0319202Z             }
2026-06-23T09:38:03.0319307Z           ]
2026-06-23T09:38:03.0319407Z         },
2026-06-23T09:38:03.0319512Z         "int": {
2026-06-23T09:38:03.0319627Z           "complete": true,
2026-06-23T09:38:03.0319736Z           "evidence": [
2026-06-23T09:38:03.0319836Z             {
2026-06-23T09:38:03.0319993Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.0320115Z               "line": 156
2026-06-23T09:38:03.0320216Z             },
2026-06-23T09:38:03.0320310Z             {
2026-06-23T09:38:03.0320456Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-23T09:38:03.0320562Z               "line": 145
2026-06-23T09:38:03.0320667Z             },
2026-06-23T09:38:03.0320771Z             {
2026-06-23T09:38:03.0320924Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0321024Z               "line": 709
2026-06-23T09:38:03.0321125Z             },
2026-06-23T09:38:03.0321229Z             {
2026-06-23T09:38:03.0321377Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0321488Z               "line": 1071
2026-06-23T09:38:03.0321597Z             }
2026-06-23T09:38:03.0321687Z           ]
2026-06-23T09:38:03.0321793Z         },
2026-06-23T09:38:03.0321897Z         "unit": {
2026-06-23T09:38:03.0322011Z           "complete": true,
2026-06-23T09:38:03.0322117Z           "evidence": [
2026-06-23T09:38:03.0322326Z             {
2026-06-23T09:38:03.0322466Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0322578Z               "line": 552
2026-06-23T09:38:03.0322684Z             },
2026-06-23T09:38:03.0322785Z             {
2026-06-23T09:38:03.0322916Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0323107Z               "line": 595
2026-06-23T09:38:03.0323214Z             },
2026-06-23T09:38:03.0323323Z             {
2026-06-23T09:38:03.0323458Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T09:38:03.0323562Z               "line": 219
2026-06-23T09:38:03.0323653Z             }
2026-06-23T09:38:03.0323758Z           ]
2026-06-23T09:38:03.0323858Z         }
2026-06-23T09:38:03.0323962Z       }
2026-06-23T09:38:03.0324069Z     },
2026-06-23T09:38:03.0324164Z     {
2026-06-23T09:38:03.0324272Z       "id": "REQ-INST-6",
2026-06-23T09:38:03.0324473Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-23T09:38:03.0324592Z       "requiredStages": [
2026-06-23T09:38:03.0324699Z         "impl",
2026-06-23T09:38:03.0324802Z         "unit",
2026-06-23T09:38:03.0324912Z         "int"
2026-06-23T09:38:03.0325004Z       ],
2026-06-23T09:38:03.0325116Z       "stages": {
2026-06-23T09:38:03.0325217Z         "doc": {
2026-06-23T09:38:03.0325333Z           "complete": true,
2026-06-23T09:38:03.0325441Z           "evidence": [
2026-06-23T09:38:03.0325540Z             {
2026-06-23T09:38:03.0325669Z               "path": "docs/DEFERRED.md",
2026-06-23T09:38:03.0325767Z               "line": 13
2026-06-23T09:38:03.0325876Z             }
2026-06-23T09:38:03.0325977Z           ]
2026-06-23T09:38:03.0326082Z         },
2026-06-23T09:38:03.0326190Z         "impl": {
2026-06-23T09:38:03.0326301Z           "complete": true,
2026-06-23T09:38:03.0326406Z           "evidence": [
2026-06-23T09:38:03.0326510Z             {
2026-06-23T09:38:03.0326659Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0326768Z               "line": 391
2026-06-23T09:38:03.0326878Z             },
2026-06-23T09:38:03.0326978Z             {
2026-06-23T09:38:03.0327116Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T09:38:03.0327222Z               "line": 27
2026-06-23T09:38:03.0327326Z             },
2026-06-23T09:38:03.0327431Z             {
2026-06-23T09:38:03.0327575Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T09:38:03.0327688Z               "line": 73
2026-06-23T09:38:03.0327788Z             },
2026-06-23T09:38:03.0327890Z             {
2026-06-23T09:38:03.0328026Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-23T09:38:03.0328133Z               "line": 182
2026-06-23T09:38:03.0328223Z             },
2026-06-23T09:38:03.0328327Z             {
2026-06-23T09:38:03.0328464Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0328566Z               "line": 426
2026-06-23T09:38:03.0328670Z             },
2026-06-23T09:38:03.0328765Z             {
2026-06-23T09:38:03.0328895Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-23T09:38:03.0329094Z               "line": 31
2026-06-23T09:38:03.0329195Z             },
2026-06-23T09:38:03.0329300Z             {
2026-06-23T09:38:03.0329437Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.0329543Z               "line": 202
2026-06-23T09:38:03.0329652Z             },
2026-06-23T09:38:03.0329752Z             {
2026-06-23T09:38:03.0329886Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:03.0329986Z               "line": 83
2026-06-23T09:38:03.0330092Z             },
2026-06-23T09:38:03.0330192Z             {
2026-06-23T09:38:03.0330310Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0330426Z               "line": 2203
2026-06-23T09:38:03.0330521Z             },
2026-06-23T09:38:03.0330628Z             {
2026-06-23T09:38:03.0330748Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0330974Z               "line": 179
2026-06-23T09:38:03.0331070Z             },
2026-06-23T09:38:03.0331176Z             {
2026-06-23T09:38:03.0331312Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0331413Z               "line": 215
2026-06-23T09:38:03.0331514Z             }
2026-06-23T09:38:03.0331617Z           ]
2026-06-23T09:38:03.0331719Z         },
2026-06-23T09:38:03.0331918Z         "int": {
2026-06-23T09:38:03.0332033Z           "complete": true,
2026-06-23T09:38:03.0332147Z           "evidence": [
2026-06-23T09:38:03.0332247Z             {
2026-06-23T09:38:03.0332391Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0332496Z               "line": 723
2026-06-23T09:38:03.0332605Z             },
2026-06-23T09:38:03.0332692Z             {
2026-06-23T09:38:03.0332839Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0332949Z               "line": 1116
2026-06-23T09:38:03.0333050Z             },
2026-06-23T09:38:03.0333148Z             {
2026-06-23T09:38:03.0333274Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0333383Z               "line": 726
2026-06-23T09:38:03.0333481Z             }
2026-06-23T09:38:03.0333586Z           ]
2026-06-23T09:38:03.0333677Z         },
2026-06-23T09:38:03.0333775Z         "unit": {
2026-06-23T09:38:03.0333888Z           "complete": true,
2026-06-23T09:38:03.0333999Z           "evidence": [
2026-06-23T09:38:03.0334099Z             {
2026-06-23T09:38:03.0334237Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0334342Z               "line": 661
2026-06-23T09:38:03.0334432Z             },
2026-06-23T09:38:03.0334537Z             {
2026-06-23T09:38:03.0334671Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.0334775Z               "line": 899
2026-06-23T09:38:03.0334881Z             },
2026-06-23T09:38:03.0334981Z             {
2026-06-23T09:38:03.0335114Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-23T09:38:03.0335225Z               "line": 66
2026-06-23T09:38:03.0335329Z             },
2026-06-23T09:38:03.0335429Z             {
2026-06-23T09:38:03.0335554Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.0335667Z               "line": 297
2026-06-23T09:38:03.0335763Z             },
2026-06-23T09:38:03.0335869Z             {
2026-06-23T09:38:03.0336010Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:03.0336119Z               "line": 203
2026-06-23T09:38:03.0336225Z             }
2026-06-23T09:38:03.0336322Z           ]
2026-06-23T09:38:03.0336422Z         }
2026-06-23T09:38:03.0336523Z       }
2026-06-23T09:38:03.0336623Z     },
2026-06-23T09:38:03.0336727Z     {
2026-06-23T09:38:03.0336838Z       "id": "REQ-INST-7",
2026-06-23T09:38:03.0336994Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-23T09:38:03.0337104Z       "requiredStages": [
2026-06-23T09:38:03.0337204Z         "impl",
2026-06-23T09:38:03.0337305Z         "unit",
2026-06-23T09:38:03.0337409Z         "int"
2026-06-23T09:38:03.0337515Z       ],
2026-06-23T09:38:03.0337610Z       "stages": {
2026-06-23T09:38:03.0337719Z         "doc": {
2026-06-23T09:38:03.0337830Z           "complete": false,
2026-06-23T09:38:03.0337939Z           "evidence": []
2026-06-23T09:38:03.0338038Z         },
2026-06-23T09:38:03.0338135Z         "impl": {
2026-06-23T09:38:03.0338243Z           "complete": true,
2026-06-23T09:38:03.0338348Z           "evidence": [
2026-06-23T09:38:03.0338446Z             {
2026-06-23T09:38:03.0338592Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0338703Z               "line": 436
2026-06-23T09:38:03.0338803Z             },
2026-06-23T09:38:03.0338901Z             {
2026-06-23T09:38:03.0339140Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0339249Z               "line": 27
2026-06-23T09:38:03.0339354Z             },
2026-06-23T09:38:03.0339455Z             {
2026-06-23T09:38:03.0339606Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0339836Z               "line": 207
2026-06-23T09:38:03.0339939Z             },
2026-06-23T09:38:03.0340046Z             {
2026-06-23T09:38:03.0340193Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0340303Z               "line": 344
2026-06-23T09:38:03.0340403Z             },
2026-06-23T09:38:03.0340598Z             {
2026-06-23T09:38:03.0340747Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-23T09:38:03.0340846Z               "line": 59
2026-06-23T09:38:03.0340951Z             },
2026-06-23T09:38:03.0341047Z             {
2026-06-23T09:38:03.0341198Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0341298Z               "line": 41
2026-06-23T09:38:03.0341402Z             },
2026-06-23T09:38:03.0341505Z             {
2026-06-23T09:38:03.0341649Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.0341759Z               "line": 27
2026-06-23T09:38:03.0341863Z             },
2026-06-23T09:38:03.0341973Z             {
2026-06-23T09:38:03.0342112Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.0342216Z               "line": 119
2026-06-23T09:38:03.0342322Z             },
2026-06-23T09:38:03.0342426Z             {
2026-06-23T09:38:03.0342570Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.0342674Z               "line": 134
2026-06-23T09:38:03.0342783Z             },
2026-06-23T09:38:03.0342879Z             {
2026-06-23T09:38:03.0343031Z               "path": "crates/spt-store/src/registry.rs",
2026-06-23T09:38:03.0343146Z               "line": 139
2026-06-23T09:38:03.0343242Z             }
2026-06-23T09:38:03.0343346Z           ]
2026-06-23T09:38:03.0343441Z         },
2026-06-23T09:38:03.0343548Z         "int": {
2026-06-23T09:38:03.0343661Z           "complete": true,
2026-06-23T09:38:03.0343775Z           "evidence": [
2026-06-23T09:38:03.0343881Z             {
2026-06-23T09:38:03.0344027Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-23T09:38:03.0344136Z               "line": 145
2026-06-23T09:38:03.0344242Z             },
2026-06-23T09:38:03.0344344Z             {
2026-06-23T09:38:03.0344488Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0344597Z               "line": 667
2026-06-23T09:38:03.0344706Z             },
2026-06-23T09:38:03.0344797Z             {
2026-06-23T09:38:03.0344941Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0345040Z               "line": 966
2026-06-23T09:38:03.0345136Z             }
2026-06-23T09:38:03.0345236Z           ]
2026-06-23T09:38:03.0345340Z         },
2026-06-23T09:38:03.0345441Z         "unit": {
2026-06-23T09:38:03.0345551Z           "complete": true,
2026-06-23T09:38:03.0345660Z           "evidence": [
2026-06-23T09:38:03.0345761Z             {
2026-06-23T09:38:03.0345913Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0346028Z               "line": 1134
2026-06-23T09:38:03.0346129Z             },
2026-06-23T09:38:03.0346241Z             {
2026-06-23T09:38:03.0346396Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0346514Z               "line": 1521
2026-06-23T09:38:03.0346608Z             },
2026-06-23T09:38:03.0346703Z             {
2026-06-23T09:38:03.0346859Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-23T09:38:03.0346968Z               "line": 84
2026-06-23T09:38:03.0347058Z             },
2026-06-23T09:38:03.0347160Z             {
2026-06-23T09:38:03.0347302Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0347408Z               "line": 812
2026-06-23T09:38:03.0347503Z             },
2026-06-23T09:38:03.0347607Z             {
2026-06-23T09:38:03.0347737Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0347846Z               "line": 823
2026-06-23T09:38:03.0347950Z             },
2026-06-23T09:38:03.0348136Z             {
2026-06-23T09:38:03.0348279Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0348385Z               "line": 838
2026-06-23T09:38:03.0348494Z             },
2026-06-23T09:38:03.0348594Z             {
2026-06-23T09:38:03.0348747Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.0348928Z               "line": 166
2026-06-23T09:38:03.0349123Z             },
2026-06-23T09:38:03.0349224Z             {
2026-06-23T09:38:03.0349372Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.0349475Z               "line": 181
2026-06-23T09:38:03.0349575Z             },
2026-06-23T09:38:03.0349671Z             {
2026-06-23T09:38:03.0349804Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.0349914Z               "line": 214
2026-06-23T09:38:03.0350010Z             }
2026-06-23T09:38:03.0350119Z           ]
2026-06-23T09:38:03.0350224Z         }
2026-06-23T09:38:03.0350329Z       }
2026-06-23T09:38:03.0350424Z     },
2026-06-23T09:38:03.0350509Z     {
2026-06-23T09:38:03.0350625Z       "id": "REQ-INST-8",
2026-06-23T09:38:03.0350801Z       "title": "Remote-control mode distinct from local operation",
2026-06-23T09:38:03.0350912Z       "requiredStages": [
2026-06-23T09:38:03.0351015Z         "impl",
2026-06-23T09:38:03.0351116Z         "unit",
2026-06-23T09:38:03.0351222Z         "int"
2026-06-23T09:38:03.0351316Z       ],
2026-06-23T09:38:03.0351421Z       "stages": {
2026-06-23T09:38:03.0351526Z         "doc": {
2026-06-23T09:38:03.0351641Z           "complete": false,
2026-06-23T09:38:03.0351748Z           "evidence": []
2026-06-23T09:38:03.0351849Z         },
2026-06-23T09:38:03.0351958Z         "impl": {
2026-06-23T09:38:03.0352061Z           "complete": true,
2026-06-23T09:38:03.0352171Z           "evidence": [
2026-06-23T09:38:03.0352272Z             {
2026-06-23T09:38:03.0352413Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:03.0352524Z               "line": 202
2026-06-23T09:38:03.0352624Z             },
2026-06-23T09:38:03.0352728Z             {
2026-06-23T09:38:03.0352863Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:03.0352977Z               "line": 504
2026-06-23T09:38:03.0353081Z             },
2026-06-23T09:38:03.0353187Z             {
2026-06-23T09:38:03.0353325Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:03.0353425Z               "line": 544
2026-06-23T09:38:03.0353535Z             },
2026-06-23T09:38:03.0353639Z             {
2026-06-23T09:38:03.0353788Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.0353897Z               "line": 62
2026-06-23T09:38:03.0354002Z             }
2026-06-23T09:38:03.0354108Z           ]
2026-06-23T09:38:03.0354212Z         },
2026-06-23T09:38:03.0354316Z         "int": {
2026-06-23T09:38:03.0354428Z           "complete": true,
2026-06-23T09:38:03.0354531Z           "evidence": [
2026-06-23T09:38:03.0354630Z             {
2026-06-23T09:38:03.0354782Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.0354890Z               "line": 415
2026-06-23T09:38:03.0354990Z             },
2026-06-23T09:38:03.0355100Z             {
2026-06-23T09:38:03.0355238Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0355352Z               "line": 1030
2026-06-23T09:38:03.0355463Z             }
2026-06-23T09:38:03.0355558Z           ]
2026-06-23T09:38:03.0355667Z         },
2026-06-23T09:38:03.0355768Z         "unit": {
2026-06-23T09:38:03.0355887Z           "complete": true,
2026-06-23T09:38:03.0355991Z           "evidence": [
2026-06-23T09:38:03.0356102Z             {
2026-06-23T09:38:03.0356244Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0356360Z               "line": 371
2026-06-23T09:38:03.0356463Z             },
2026-06-23T09:38:03.0356568Z             {
2026-06-23T09:38:03.0356708Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0356922Z               "line": 642
2026-06-23T09:38:03.0357028Z             },
2026-06-23T09:38:03.0357135Z             {
2026-06-23T09:38:03.0357273Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.0357387Z               "line": 116
2026-06-23T09:38:03.0357485Z             },
2026-06-23T09:38:03.0357595Z             {
2026-06-23T09:38:03.0357833Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.0357939Z               "line": 160
2026-06-23T09:38:03.0358043Z             }
2026-06-23T09:38:03.0358143Z           ]
2026-06-23T09:38:03.0358254Z         }
2026-06-23T09:38:03.0358353Z       }
2026-06-23T09:38:03.0358443Z     },
2026-06-23T09:38:03.0358539Z     {
2026-06-23T09:38:03.0358659Z       "id": "REQ-INST-9",
2026-06-23T09:38:03.0358868Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-23T09:38:03.0359055Z       "requiredStages": [
2026-06-23T09:38:03.0359154Z         "impl",
2026-06-23T09:38:03.0359260Z         "unit"
2026-06-23T09:38:03.0359363Z       ],
2026-06-23T09:38:03.0359469Z       "stages": {
2026-06-23T09:38:03.0359571Z         "doc": {
2026-06-23T09:38:03.0359683Z           "complete": false,
2026-06-23T09:38:03.0359794Z           "evidence": []
2026-06-23T09:38:03.0359890Z         },
2026-06-23T09:38:03.0359993Z         "impl": {
2026-06-23T09:38:03.0360111Z           "complete": true,
2026-06-23T09:38:03.0360217Z           "evidence": [
2026-06-23T09:38:03.0360326Z             {
2026-06-23T09:38:03.0360484Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0360589Z               "line": 449
2026-06-23T09:38:03.0360693Z             }
2026-06-23T09:38:03.0360794Z           ]
2026-06-23T09:38:03.0360899Z         },
2026-06-23T09:38:03.0361003Z         "int": {
2026-06-23T09:38:03.0361113Z           "complete": false,
2026-06-23T09:38:03.0361228Z           "evidence": []
2026-06-23T09:38:03.0361332Z         },
2026-06-23T09:38:03.0361438Z         "unit": {
2026-06-23T09:38:03.0361552Z           "complete": true,
2026-06-23T09:38:03.0361661Z           "evidence": [
2026-06-23T09:38:03.0361753Z             {
2026-06-23T09:38:03.0361890Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0362000Z               "line": 1397
2026-06-23T09:38:03.0362091Z             },
2026-06-23T09:38:03.0362201Z             {
2026-06-23T09:38:03.0362347Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0362452Z               "line": 1406
2026-06-23T09:38:03.0362546Z             },
2026-06-23T09:38:03.0362649Z             {
2026-06-23T09:38:03.0362798Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0362898Z               "line": 1422
2026-06-23T09:38:03.0363012Z             },
2026-06-23T09:38:03.0363113Z             {
2026-06-23T09:38:03.0363260Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0363370Z               "line": 1434
2026-06-23T09:38:03.0363480Z             },
2026-06-23T09:38:03.0363589Z             {
2026-06-23T09:38:03.0363733Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0363837Z               "line": 1454
2026-06-23T09:38:03.0363937Z             }
2026-06-23T09:38:03.0364039Z           ]
2026-06-23T09:38:03.0364142Z         }
2026-06-23T09:38:03.0364252Z       }
2026-06-23T09:38:03.0364358Z     },
2026-06-23T09:38:03.0364447Z     {
2026-06-23T09:38:03.0364552Z       "id": "REQ-INSTALL-1",
2026-06-23T09:38:03.0364772Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-23T09:38:03.0364891Z       "requiredStages": [
2026-06-23T09:38:03.0364993Z         "doc",
2026-06-23T09:38:03.0365101Z         "impl",
2026-06-23T09:38:03.0365204Z         "int"
2026-06-23T09:38:03.0365300Z       ],
2026-06-23T09:38:03.0365408Z       "stages": {
2026-06-23T09:38:03.0365507Z         "doc": {
2026-06-23T09:38:03.0365622Z           "complete": true,
2026-06-23T09:38:03.0365727Z           "evidence": [
2026-06-23T09:38:03.0365942Z             {
2026-06-23T09:38:03.0366066Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0366174Z               "line": 775
2026-06-23T09:38:03.0366280Z             }
2026-06-23T09:38:03.0366385Z           ]
2026-06-23T09:38:03.0366489Z         },
2026-06-23T09:38:03.0366591Z         "impl": {
2026-06-23T09:38:03.0366799Z           "complete": true,
2026-06-23T09:38:03.0366906Z           "evidence": [
2026-06-23T09:38:03.0367005Z             {
2026-06-23T09:38:03.0367148Z               "path": "installer/install.ps1",
2026-06-23T09:38:03.0367253Z               "line": 57
2026-06-23T09:38:03.0367362Z             },
2026-06-23T09:38:03.0367462Z             {
2026-06-23T09:38:03.0367592Z               "path": "installer/install.sh",
2026-06-23T09:38:03.0367700Z               "line": 52
2026-06-23T09:38:03.0367809Z             }
2026-06-23T09:38:03.0367914Z           ]
2026-06-23T09:38:03.0368013Z         },
2026-06-23T09:38:03.0368117Z         "int": {
2026-06-23T09:38:03.0368232Z           "complete": true,
2026-06-23T09:38:03.0368337Z           "evidence": [
2026-06-23T09:38:03.0368441Z             {
2026-06-23T09:38:03.0368571Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-23T09:38:03.0368680Z               "line": 21
2026-06-23T09:38:03.0368779Z             }
2026-06-23T09:38:03.0368885Z           ]
2026-06-23T09:38:03.0369065Z         },
2026-06-23T09:38:03.0369176Z         "unit": {
2026-06-23T09:38:03.0369290Z           "complete": false,
2026-06-23T09:38:03.0369400Z           "evidence": []
2026-06-23T09:38:03.0369501Z         }
2026-06-23T09:38:03.0369605Z       }
2026-06-23T09:38:03.0369700Z     },
2026-06-23T09:38:03.0369792Z     {
2026-06-23T09:38:03.0369914Z       "id": "REQ-INSTALL-10",
2026-06-23T09:38:03.0371344Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-23T09:38:03.0371463Z       "requiredStages": [
2026-06-23T09:38:03.0371572Z         "impl",
2026-06-23T09:38:03.0371673Z         "unit"
2026-06-23T09:38:03.0371778Z       ],
2026-06-23T09:38:03.0371892Z       "stages": {
2026-06-23T09:38:03.0371993Z         "doc": {
2026-06-23T09:38:03.0372103Z           "complete": false,
2026-06-23T09:38:03.0372216Z           "evidence": []
2026-06-23T09:38:03.0372318Z         },
2026-06-23T09:38:03.0372413Z         "impl": {
2026-06-23T09:38:03.0372531Z           "complete": true,
2026-06-23T09:38:03.0372642Z           "evidence": [
2026-06-23T09:38:03.0372728Z             {
2026-06-23T09:38:03.0372869Z               "path": "installer/install.ps1",
2026-06-23T09:38:03.0372969Z               "line": 191
2026-06-23T09:38:03.0373078Z             }
2026-06-23T09:38:03.0373186Z           ]
2026-06-23T09:38:03.0373296Z         },
2026-06-23T09:38:03.0373406Z         "int": {
2026-06-23T09:38:03.0373510Z           "complete": false,
2026-06-23T09:38:03.0373625Z           "evidence": []
2026-06-23T09:38:03.0373721Z         },
2026-06-23T09:38:03.0373825Z         "unit": {
2026-06-23T09:38:03.0373935Z           "complete": true,
2026-06-23T09:38:03.0374045Z           "evidence": [
2026-06-23T09:38:03.0376477Z             {
2026-06-23T09:38:03.0376664Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-23T09:38:03.0376773Z               "line": 211
2026-06-23T09:38:03.0376869Z             }
2026-06-23T09:38:03.0376974Z           ]
2026-06-23T09:38:03.0377078Z         }
2026-06-23T09:38:03.0377179Z       }
2026-06-23T09:38:03.0377283Z     },
2026-06-23T09:38:03.0377383Z     {
2026-06-23T09:38:03.0377504Z       "id": "REQ-INSTALL-11",
2026-06-23T09:38:03.0379479Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-23T09:38:03.0379889Z       "requiredStages": [
2026-06-23T09:38:03.0379988Z         "doc",
2026-06-23T09:38:03.0380085Z         "impl",
2026-06-23T09:38:03.0380189Z         "unit"
2026-06-23T09:38:03.0380289Z       ],
2026-06-23T09:38:03.0380400Z       "stages": {
2026-06-23T09:38:03.0380498Z         "doc": {
2026-06-23T09:38:03.0380599Z           "complete": true,
2026-06-23T09:38:03.0380710Z           "evidence": [
2026-06-23T09:38:03.0380808Z             {
2026-06-23T09:38:03.0380938Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0381039Z               "line": 147
2026-06-23T09:38:03.0381141Z             },
2026-06-23T09:38:03.0381250Z             {
2026-06-23T09:38:03.0381366Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.0381470Z               "line": 90
2026-06-23T09:38:03.0381561Z             }
2026-06-23T09:38:03.0381667Z           ]
2026-06-23T09:38:03.0381767Z         },
2026-06-23T09:38:03.0381875Z         "impl": {
2026-06-23T09:38:03.0381982Z           "complete": true,
2026-06-23T09:38:03.0382100Z           "evidence": [
2026-06-23T09:38:03.0382209Z             {
2026-06-23T09:38:03.0382357Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.0382462Z               "line": 223
2026-06-23T09:38:03.0382563Z             },
2026-06-23T09:38:03.0382668Z             {
2026-06-23T09:38:03.0382820Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0382921Z               "line": 115
2026-06-23T09:38:03.0383024Z             },
2026-06-23T09:38:03.0383120Z             {
2026-06-23T09:38:03.0383270Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0383372Z               "line": 188
2026-06-23T09:38:03.0383481Z             },
2026-06-23T09:38:03.0383577Z             {
2026-06-23T09:38:03.0383718Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0383827Z               "line": 206
2026-06-23T09:38:03.0383928Z             },
2026-06-23T09:38:03.0384032Z             {
2026-06-23T09:38:03.0384166Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0384281Z               "line": 327
2026-06-23T09:38:03.0384385Z             },
2026-06-23T09:38:03.0384481Z             {
2026-06-23T09:38:03.0384624Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-23T09:38:03.0384728Z               "line": 337
2026-06-23T09:38:03.0384834Z             },
2026-06-23T09:38:03.0384934Z             {
2026-06-23T09:38:03.0385081Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.0385187Z               "line": 88
2026-06-23T09:38:03.0385292Z             },
2026-06-23T09:38:03.0385396Z             {
2026-06-23T09:38:03.0385530Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.0385639Z               "line": 104
2026-06-23T09:38:03.0385740Z             },
2026-06-23T09:38:03.0385840Z             {
2026-06-23T09:38:03.0385992Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0386098Z               "line": 300
2026-06-23T09:38:03.0386202Z             },
2026-06-23T09:38:03.0386306Z             {
2026-06-23T09:38:03.0386449Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0386552Z               "line": 335
2026-06-23T09:38:03.0386656Z             },
2026-06-23T09:38:03.0386752Z             {
2026-06-23T09:38:03.0386895Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0386999Z               "line": 526
2026-06-23T09:38:03.0387181Z             },
2026-06-23T09:38:03.0387276Z             {
2026-06-23T09:38:03.0387406Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0387525Z               "line": 549
2026-06-23T09:38:03.0387628Z             },
2026-06-23T09:38:03.0387735Z             {
2026-06-23T09:38:03.0387877Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0388054Z               "line": 564
2026-06-23T09:38:03.0388154Z             },
2026-06-23T09:38:03.0388258Z             {
2026-06-23T09:38:03.0388388Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:03.0388501Z               "line": 492
2026-06-23T09:38:03.0388597Z             }
2026-06-23T09:38:03.0388698Z           ]
2026-06-23T09:38:03.0388797Z         },
2026-06-23T09:38:03.0388891Z         "int": {
2026-06-23T09:38:03.0389086Z           "complete": false,
2026-06-23T09:38:03.0389198Z           "evidence": []
2026-06-23T09:38:03.0389304Z         },
2026-06-23T09:38:03.0389405Z         "unit": {
2026-06-23T09:38:03.0389513Z           "complete": true,
2026-06-23T09:38:03.0389619Z           "evidence": [
2026-06-23T09:38:03.0389710Z             {
2026-06-23T09:38:03.0389861Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0389972Z               "line": 1571
2026-06-23T09:38:03.0390077Z             },
2026-06-23T09:38:03.0390181Z             {
2026-06-23T09:38:03.0390325Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0390425Z               "line": 1624
2026-06-23T09:38:03.0390530Z             },
2026-06-23T09:38:03.0390635Z             {
2026-06-23T09:38:03.0390768Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.0390873Z               "line": 1676
2026-06-23T09:38:03.0390974Z             },
2026-06-23T09:38:03.0391073Z             {
2026-06-23T09:38:03.0391213Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0391331Z               "line": 802
2026-06-23T09:38:03.0391431Z             },
2026-06-23T09:38:03.0391532Z             {
2026-06-23T09:38:03.0391669Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0391777Z               "line": 814
2026-06-23T09:38:03.0391873Z             },
2026-06-23T09:38:03.0391975Z             {
2026-06-23T09:38:03.0392111Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.0392227Z               "line": 823
2026-06-23T09:38:03.0392322Z             }
2026-06-23T09:38:03.0392416Z           ]
2026-06-23T09:38:03.0392513Z         }
2026-06-23T09:38:03.0392612Z       }
2026-06-23T09:38:03.0392702Z     },
2026-06-23T09:38:03.0392798Z     {
2026-06-23T09:38:03.0392922Z       "id": "REQ-INSTALL-12",
2026-06-23T09:38:03.0395551Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-23T09:38:03.0395690Z       "requiredStages": [
2026-06-23T09:38:03.0395799Z         "doc",
2026-06-23T09:38:03.0395899Z         "impl",
2026-06-23T09:38:03.0396005Z         "unit",
2026-06-23T09:38:03.0396104Z         "int"
2026-06-23T09:38:03.0396199Z       ],
2026-06-23T09:38:03.0396310Z       "stages": {
2026-06-23T09:38:03.0396410Z         "doc": {
2026-06-23T09:38:03.0396639Z           "complete": true,
2026-06-23T09:38:03.0396739Z           "evidence": [
2026-06-23T09:38:03.0396847Z             {
2026-06-23T09:38:03.0396961Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0397075Z               "line": 194
2026-06-23T09:38:03.0397178Z             }
2026-06-23T09:38:03.0397279Z           ]
2026-06-23T09:38:03.0397379Z         },
2026-06-23T09:38:03.0397578Z         "impl": {
2026-06-23T09:38:03.0397694Z           "complete": true,
2026-06-23T09:38:03.0397802Z           "evidence": [
2026-06-23T09:38:03.0397898Z             {
2026-06-23T09:38:03.0398051Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0398155Z               "line": 27
2026-06-23T09:38:03.0398251Z             },
2026-06-23T09:38:03.0398351Z             {
2026-06-23T09:38:03.0398494Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0398605Z               "line": 223
2026-06-23T09:38:03.0398709Z             },
2026-06-23T09:38:03.0398819Z             {
2026-06-23T09:38:03.0399028Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0399143Z               "line": 6363
2026-06-23T09:38:03.0399235Z             }
2026-06-23T09:38:03.0399338Z           ]
2026-06-23T09:38:03.0399432Z         },
2026-06-23T09:38:03.0399542Z         "int": {
2026-06-23T09:38:03.0399651Z           "complete": true,
2026-06-23T09:38:03.0399764Z           "evidence": [
2026-06-23T09:38:03.0399864Z             {
2026-06-23T09:38:03.0400026Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-23T09:38:03.0400136Z               "line": 19
2026-06-23T09:38:03.0400237Z             }
2026-06-23T09:38:03.0400337Z           ]
2026-06-23T09:38:03.0400441Z         },
2026-06-23T09:38:03.0400542Z         "unit": {
2026-06-23T09:38:03.0400656Z           "complete": true,
2026-06-23T09:38:03.0400765Z           "evidence": [
2026-06-23T09:38:03.0400866Z             {
2026-06-23T09:38:03.0401009Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0401118Z               "line": 395
2026-06-23T09:38:03.0401223Z             },
2026-06-23T09:38:03.0401319Z             {
2026-06-23T09:38:03.0401463Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0401566Z               "line": 421
2026-06-23T09:38:03.0401671Z             },
2026-06-23T09:38:03.0401773Z             {
2026-06-23T09:38:03.0401919Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0402024Z               "line": 440
2026-06-23T09:38:03.0402126Z             },
2026-06-23T09:38:03.0402224Z             {
2026-06-23T09:38:03.0402366Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0402472Z               "line": 475
2026-06-23T09:38:03.0402572Z             },
2026-06-23T09:38:03.0402676Z             {
2026-06-23T09:38:03.0402806Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0402915Z               "line": 10203
2026-06-23T09:38:03.0403015Z             }
2026-06-23T09:38:03.0403111Z           ]
2026-06-23T09:38:03.0403211Z         }
2026-06-23T09:38:03.0403310Z       }
2026-06-23T09:38:03.0403411Z     },
2026-06-23T09:38:03.0403511Z     {
2026-06-23T09:38:03.0403620Z       "id": "REQ-INSTALL-2",
2026-06-23T09:38:03.0403788Z       "title": "Marketplace-repackaging-friendly install",
2026-06-23T09:38:03.0403897Z       "requiredStages": [
2026-06-23T09:38:03.0404003Z         "doc"
2026-06-23T09:38:03.0404103Z       ],
2026-06-23T09:38:03.0404202Z       "stages": {
2026-06-23T09:38:03.0404307Z         "doc": {
2026-06-23T09:38:03.0404413Z           "complete": true,
2026-06-23T09:38:03.0404525Z           "evidence": [
2026-06-23T09:38:03.0404625Z             {
2026-06-23T09:38:03.0404740Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0404847Z               "line": 776
2026-06-23T09:38:03.0404947Z             }
2026-06-23T09:38:03.0405048Z           ]
2026-06-23T09:38:03.0405148Z         },
2026-06-23T09:38:03.0405252Z         "impl": {
2026-06-23T09:38:03.0405363Z           "complete": false,
2026-06-23T09:38:03.0405567Z           "evidence": []
2026-06-23T09:38:03.0405669Z         },
2026-06-23T09:38:03.0405773Z         "int": {
2026-06-23T09:38:03.0405882Z           "complete": false,
2026-06-23T09:38:03.0405993Z           "evidence": []
2026-06-23T09:38:03.0406088Z         },
2026-06-23T09:38:03.0406192Z         "unit": {
2026-06-23T09:38:03.0406407Z           "complete": false,
2026-06-23T09:38:03.0406521Z           "evidence": []
2026-06-23T09:38:03.0406622Z         }
2026-06-23T09:38:03.0406725Z       }
2026-06-23T09:38:03.0406821Z     },
2026-06-23T09:38:03.0406918Z     {
2026-06-23T09:38:03.0407031Z       "id": "REQ-INSTALL-3",
2026-06-23T09:38:03.0407195Z       "title": "Idempotent + interactive-optional first run",
2026-06-23T09:38:03.0407304Z       "requiredStages": [
2026-06-23T09:38:03.0407407Z         "impl",
2026-06-23T09:38:03.0407507Z         "int"
2026-06-23T09:38:03.0407607Z       ],
2026-06-23T09:38:03.0407710Z       "stages": {
2026-06-23T09:38:03.0407824Z         "doc": {
2026-06-23T09:38:03.0407934Z           "complete": false,
2026-06-23T09:38:03.0408043Z           "evidence": []
2026-06-23T09:38:03.0408143Z         },
2026-06-23T09:38:03.0408254Z         "impl": {
2026-06-23T09:38:03.0408358Z           "complete": true,
2026-06-23T09:38:03.0408468Z           "evidence": [
2026-06-23T09:38:03.0408564Z             {
2026-06-23T09:38:03.0408696Z               "path": "installer/install.ps1",
2026-06-23T09:38:03.0408812Z               "line": 100
2026-06-23T09:38:03.0408911Z             },
2026-06-23T09:38:03.0409092Z             {
2026-06-23T09:38:03.0409217Z               "path": "installer/install.ps1",
2026-06-23T09:38:03.0409321Z               "line": 111
2026-06-23T09:38:03.0409427Z             },
2026-06-23T09:38:03.0409527Z             {
2026-06-23T09:38:03.0409655Z               "path": "installer/install.sh",
2026-06-23T09:38:03.0409757Z               "line": 79
2026-06-23T09:38:03.0409856Z             }
2026-06-23T09:38:03.0409950Z           ]
2026-06-23T09:38:03.0410054Z         },
2026-06-23T09:38:03.0410155Z         "int": {
2026-06-23T09:38:03.0410257Z           "complete": true,
2026-06-23T09:38:03.0410366Z           "evidence": [
2026-06-23T09:38:03.0410463Z             {
2026-06-23T09:38:03.0410610Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-23T09:38:03.0410720Z               "line": 167
2026-06-23T09:38:03.0410821Z             }
2026-06-23T09:38:03.0410915Z           ]
2026-06-23T09:38:03.0411010Z         },
2026-06-23T09:38:03.0411107Z         "unit": {
2026-06-23T09:38:03.0411221Z           "complete": false,
2026-06-23T09:38:03.0411325Z           "evidence": []
2026-06-23T09:38:03.0411413Z         }
2026-06-23T09:38:03.0411516Z       }
2026-06-23T09:38:03.0411612Z     },
2026-06-23T09:38:03.0411718Z     {
2026-06-23T09:38:03.0411817Z       "id": "REQ-INSTALL-4",
2026-06-23T09:38:03.0412479Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-23T09:38:03.0412594Z       "requiredStages": [
2026-06-23T09:38:03.0412696Z         "impl",
2026-06-23T09:38:03.0412794Z         "unit"
2026-06-23T09:38:03.0412888Z       ],
2026-06-23T09:38:03.0412989Z       "stages": {
2026-06-23T09:38:03.0413090Z         "doc": {
2026-06-23T09:38:03.0413198Z           "complete": false,
2026-06-23T09:38:03.0413309Z           "evidence": []
2026-06-23T09:38:03.0413404Z         },
2026-06-23T09:38:03.0413508Z         "impl": {
2026-06-23T09:38:03.0413614Z           "complete": true,
2026-06-23T09:38:03.0413728Z           "evidence": [
2026-06-23T09:38:03.0413828Z             {
2026-06-23T09:38:03.0413991Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.0414100Z               "line": 165
2026-06-23T09:38:03.0414204Z             },
2026-06-23T09:38:03.0414306Z             {
2026-06-23T09:38:03.0414448Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0414663Z               "line": 29
2026-06-23T09:38:03.0414752Z             },
2026-06-23T09:38:03.0414858Z             {
2026-06-23T09:38:03.0415010Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0415114Z               "line": 288
2026-06-23T09:38:03.0415219Z             },
2026-06-23T09:38:03.0415412Z             {
2026-06-23T09:38:03.0415565Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0415676Z               "line": 356
2026-06-23T09:38:03.0415774Z             },
2026-06-23T09:38:03.0415875Z             {
2026-06-23T09:38:03.0416018Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0416127Z               "line": 386
2026-06-23T09:38:03.0416229Z             },
2026-06-23T09:38:03.0416333Z             {
2026-06-23T09:38:03.0416466Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0416558Z               "line": 434
2026-06-23T09:38:03.0416662Z             },
2026-06-23T09:38:03.0416762Z             {
2026-06-23T09:38:03.0416891Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0417000Z               "line": 6051
2026-06-23T09:38:03.0417100Z             }
2026-06-23T09:38:03.0417202Z           ]
2026-06-23T09:38:03.0417305Z         },
2026-06-23T09:38:03.0417401Z         "int": {
2026-06-23T09:38:03.0417511Z           "complete": false,
2026-06-23T09:38:03.0417619Z           "evidence": []
2026-06-23T09:38:03.0417721Z         },
2026-06-23T09:38:03.0417817Z         "unit": {
2026-06-23T09:38:03.0417925Z           "complete": true,
2026-06-23T09:38:03.0418024Z           "evidence": [
2026-06-23T09:38:03.0418119Z             {
2026-06-23T09:38:03.0418275Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.0418379Z               "line": 381
2026-06-23T09:38:03.0418481Z             },
2026-06-23T09:38:03.0418585Z             {
2026-06-23T09:38:03.0418742Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0418847Z               "line": 808
2026-06-23T09:38:03.0419028Z             },
2026-06-23T09:38:03.0419115Z             {
2026-06-23T09:38:03.0419261Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0419372Z               "line": 849
2026-06-23T09:38:03.0419467Z             },
2026-06-23T09:38:03.0419571Z             {
2026-06-23T09:38:03.0419711Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0419819Z               "line": 869
2026-06-23T09:38:03.0419924Z             },
2026-06-23T09:38:03.0420026Z             {
2026-06-23T09:38:03.0420153Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0420258Z               "line": 9799
2026-06-23T09:38:03.0420365Z             }
2026-06-23T09:38:03.0420463Z           ]
2026-06-23T09:38:03.0420563Z         }
2026-06-23T09:38:03.0420662Z       }
2026-06-23T09:38:03.0420762Z     },
2026-06-23T09:38:03.0420856Z     {
2026-06-23T09:38:03.0420970Z       "id": "REQ-INSTALL-5",
2026-06-23T09:38:03.0421485Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-23T09:38:03.0421600Z       "requiredStages": [
2026-06-23T09:38:03.0421709Z         "impl",
2026-06-23T09:38:03.0421809Z         "int"
2026-06-23T09:38:03.0421910Z       ],
2026-06-23T09:38:03.0422005Z       "stages": {
2026-06-23T09:38:03.0422110Z         "doc": {
2026-06-23T09:38:03.0422224Z           "complete": false,
2026-06-23T09:38:03.0422334Z           "evidence": []
2026-06-23T09:38:03.0422439Z         },
2026-06-23T09:38:03.0422539Z         "impl": {
2026-06-23T09:38:03.0422658Z           "complete": true,
2026-06-23T09:38:03.0422768Z           "evidence": [
2026-06-23T09:38:03.0422874Z             {
2026-06-23T09:38:03.0423006Z               "path": "installer/install.ps1",
2026-06-23T09:38:03.0423111Z               "line": 5
2026-06-23T09:38:03.0423316Z             },
2026-06-23T09:38:03.0423416Z             {
2026-06-23T09:38:03.0423544Z               "path": "installer/install.sh",
2026-06-23T09:38:03.0423650Z               "line": 6
2026-06-23T09:38:03.0423763Z             }
2026-06-23T09:38:03.0423864Z           ]
2026-06-23T09:38:03.0423964Z         },
2026-06-23T09:38:03.0424059Z         "int": {
2026-06-23T09:38:03.0424264Z           "complete": true,
2026-06-23T09:38:03.0424373Z           "evidence": [
2026-06-23T09:38:03.0424474Z             {
2026-06-23T09:38:03.0424627Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-23T09:38:03.0424736Z               "line": 22
2026-06-23T09:38:03.0424837Z             }
2026-06-23T09:38:03.0424941Z           ]
2026-06-23T09:38:03.0425032Z         },
2026-06-23T09:38:03.0425133Z         "unit": {
2026-06-23T09:38:03.0425242Z           "complete": false,
2026-06-23T09:38:03.0425351Z           "evidence": []
2026-06-23T09:38:03.0425457Z         }
2026-06-23T09:38:03.0425562Z       }
2026-06-23T09:38:03.0425660Z     },
2026-06-23T09:38:03.0425755Z     {
2026-06-23T09:38:03.0425869Z       "id": "REQ-INSTALL-6",
2026-06-23T09:38:03.0427084Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-23T09:38:03.0427208Z       "requiredStages": [
2026-06-23T09:38:03.0427312Z         "impl",
2026-06-23T09:38:03.0427408Z         "unit"
2026-06-23T09:38:03.0427513Z       ],
2026-06-23T09:38:03.0427617Z       "stages": {
2026-06-23T09:38:03.0427728Z         "doc": {
2026-06-23T09:38:03.0427832Z           "complete": false,
2026-06-23T09:38:03.0427936Z           "evidence": []
2026-06-23T09:38:03.0428038Z         },
2026-06-23T09:38:03.0428137Z         "impl": {
2026-06-23T09:38:03.0428251Z           "complete": true,
2026-06-23T09:38:03.0428358Z           "evidence": [
2026-06-23T09:38:03.0428462Z             {
2026-06-23T09:38:03.0428608Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0428718Z               "line": 61
2026-06-23T09:38:03.0428821Z             },
2026-06-23T09:38:03.0428925Z             {
2026-06-23T09:38:03.0429155Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.0429263Z               "line": 641
2026-06-23T09:38:03.0429370Z             },
2026-06-23T09:38:03.0429479Z             {
2026-06-23T09:38:03.0429622Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:03.0429727Z               "line": 191
2026-06-23T09:38:03.0429831Z             },
2026-06-23T09:38:03.0429932Z             {
2026-06-23T09:38:03.0430074Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:03.0430179Z               "line": 276
2026-06-23T09:38:03.0430285Z             },
2026-06-23T09:38:03.0430389Z             {
2026-06-23T09:38:03.0430523Z               "path": "crates/spt/src/main.rs",
2026-06-23T09:38:03.0430619Z               "line": 43
2026-06-23T09:38:03.0430727Z             },
2026-06-23T09:38:03.0430833Z             {
2026-06-23T09:38:03.0430958Z               "path": "installer/install.sh",
2026-06-23T09:38:03.0431075Z               "line": 104
2026-06-23T09:38:03.0431174Z             }
2026-06-23T09:38:03.0431270Z           ]
2026-06-23T09:38:03.0431369Z         },
2026-06-23T09:38:03.0431473Z         "int": {
2026-06-23T09:38:03.0431588Z           "complete": false,
2026-06-23T09:38:03.0431693Z           "evidence": []
2026-06-23T09:38:03.0431802Z         },
2026-06-23T09:38:03.0431903Z         "unit": {
2026-06-23T09:38:03.0432022Z           "complete": true,
2026-06-23T09:38:03.0432126Z           "evidence": [
2026-06-23T09:38:03.0432232Z             {
2026-06-23T09:38:03.0432388Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-23T09:38:03.0432598Z               "line": 894
2026-06-23T09:38:03.0432703Z             }
2026-06-23T09:38:03.0432804Z           ]
2026-06-23T09:38:03.0432899Z         }
2026-06-23T09:38:03.0432999Z       }
2026-06-23T09:38:03.0433099Z     },
2026-06-23T09:38:03.0433200Z     {
2026-06-23T09:38:03.0433304Z       "id": "REQ-INSTALL-7",
2026-06-23T09:38:03.0434548Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-23T09:38:03.0434662Z       "requiredStages": [
2026-06-23T09:38:03.0434773Z         "impl"
2026-06-23T09:38:03.0434877Z       ],
2026-06-23T09:38:03.0434977Z       "stages": {
2026-06-23T09:38:03.0435083Z         "doc": {
2026-06-23T09:38:03.0435196Z           "complete": false,
2026-06-23T09:38:03.0435310Z           "evidence": []
2026-06-23T09:38:03.0435412Z         },
2026-06-23T09:38:03.0435520Z         "impl": {
2026-06-23T09:38:03.0435630Z           "complete": true,
2026-06-23T09:38:03.0435741Z           "evidence": [
2026-06-23T09:38:03.0435844Z             {
2026-06-23T09:38:03.0435973Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0436088Z               "line": 4575
2026-06-23T09:38:03.0436192Z             },
2026-06-23T09:38:03.0436301Z             {
2026-06-23T09:38:03.0436434Z               "path": "installer/install.ps1",
2026-06-23T09:38:03.0436542Z               "line": 157
2026-06-23T09:38:03.0436647Z             }
2026-06-23T09:38:03.0436748Z           ]
2026-06-23T09:38:03.0436852Z         },
2026-06-23T09:38:03.0436952Z         "int": {
2026-06-23T09:38:03.0437072Z           "complete": false,
2026-06-23T09:38:03.0437186Z           "evidence": []
2026-06-23T09:38:03.0437281Z         },
2026-06-23T09:38:03.0437396Z         "unit": {
2026-06-23T09:38:03.0437510Z           "complete": false,
2026-06-23T09:38:03.0437626Z           "evidence": []
2026-06-23T09:38:03.0437725Z         }
2026-06-23T09:38:03.0437834Z       }
2026-06-23T09:38:03.0437935Z     },
2026-06-23T09:38:03.0438039Z     {
2026-06-23T09:38:03.0438159Z       "id": "REQ-INSTALL-8",
2026-06-23T09:38:03.0439325Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-23T09:38:03.0439442Z       "requiredStages": [
2026-06-23T09:38:03.0439553Z         "impl"
2026-06-23T09:38:03.0439653Z       ],
2026-06-23T09:38:03.0439761Z       "stages": {
2026-06-23T09:38:03.0439858Z         "doc": {
2026-06-23T09:38:03.0439972Z           "complete": false,
2026-06-23T09:38:03.0440081Z           "evidence": []
2026-06-23T09:38:03.0440187Z         },
2026-06-23T09:38:03.0440296Z         "impl": {
2026-06-23T09:38:03.0440401Z           "complete": true,
2026-06-23T09:38:03.0440507Z           "evidence": [
2026-06-23T09:38:03.0440606Z             {
2026-06-23T09:38:03.0440734Z               "path": "installer/install.ps1",
2026-06-23T09:38:03.0440845Z               "line": 184
2026-06-23T09:38:03.0440954Z             },
2026-06-23T09:38:03.0441049Z             {
2026-06-23T09:38:03.0441179Z               "path": "installer/install.sh",
2026-06-23T09:38:03.0441292Z               "line": 121
2026-06-23T09:38:03.0441388Z             }
2026-06-23T09:38:03.0441494Z           ]
2026-06-23T09:38:03.0441598Z         },
2026-06-23T09:38:03.0441697Z         "int": {
2026-06-23T09:38:03.0441811Z           "complete": false,
2026-06-23T09:38:03.0441920Z           "evidence": []
2026-06-23T09:38:03.0442023Z         },
2026-06-23T09:38:03.0442235Z         "unit": {
2026-06-23T09:38:03.0442343Z           "complete": false,
2026-06-23T09:38:03.0442444Z           "evidence": []
2026-06-23T09:38:03.0442549Z         }
2026-06-23T09:38:03.0442653Z       }
2026-06-23T09:38:03.0442744Z     },
2026-06-23T09:38:03.0442849Z     {
2026-06-23T09:38:03.0442962Z       "id": "REQ-INSTALL-9",
2026-06-23T09:38:03.0444213Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-23T09:38:03.0444451Z       "requiredStages": [
2026-06-23T09:38:03.0444560Z         "doc",
2026-06-23T09:38:03.0444664Z         "impl",
2026-06-23T09:38:03.0444766Z         "unit"
2026-06-23T09:38:03.0444869Z       ],
2026-06-23T09:38:03.0444979Z       "stages": {
2026-06-23T09:38:03.0445089Z         "doc": {
2026-06-23T09:38:03.0445193Z           "complete": true,
2026-06-23T09:38:03.0445299Z           "evidence": [
2026-06-23T09:38:03.0445404Z             {
2026-06-23T09:38:03.0445517Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0445623Z               "line": 792
2026-06-23T09:38:03.0445728Z             }
2026-06-23T09:38:03.0445832Z           ]
2026-06-23T09:38:03.0445924Z         },
2026-06-23T09:38:03.0446033Z         "impl": {
2026-06-23T09:38:03.0446147Z           "complete": true,
2026-06-23T09:38:03.0446253Z           "evidence": [
2026-06-23T09:38:03.0446357Z             {
2026-06-23T09:38:03.0446486Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0446592Z               "line": 3081
2026-06-23T09:38:03.0446700Z             },
2026-06-23T09:38:03.0446804Z             {
2026-06-23T09:38:03.0446938Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0447045Z               "line": 3150
2026-06-23T09:38:03.0447154Z             },
2026-06-23T09:38:03.0447246Z             {
2026-06-23T09:38:03.0447364Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0447478Z               "line": 3217
2026-06-23T09:38:03.0447570Z             }
2026-06-23T09:38:03.0447666Z           ]
2026-06-23T09:38:03.0447765Z         },
2026-06-23T09:38:03.0447871Z         "int": {
2026-06-23T09:38:03.0447975Z           "complete": false,
2026-06-23T09:38:03.0448084Z           "evidence": []
2026-06-23T09:38:03.0448191Z         },
2026-06-23T09:38:03.0448300Z         "unit": {
2026-06-23T09:38:03.0448409Z           "complete": true,
2026-06-23T09:38:03.0448515Z           "evidence": [
2026-06-23T09:38:03.0448623Z             {
2026-06-23T09:38:03.0448752Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0448854Z               "line": 8968
2026-06-23T09:38:03.0449043Z             },
2026-06-23T09:38:03.0449144Z             {
2026-06-23T09:38:03.0449276Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0449382Z               "line": 9829
2026-06-23T09:38:03.0449488Z             }
2026-06-23T09:38:03.0449586Z           ]
2026-06-23T09:38:03.0449690Z         }
2026-06-23T09:38:03.0449791Z       }
2026-06-23T09:38:03.0449889Z     },
2026-06-23T09:38:03.0449988Z     {
2026-06-23T09:38:03.0450098Z       "id": "REQ-KICK-1",
2026-06-23T09:38:03.0452612Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-23T09:38:03.0452851Z       "requiredStages": [
2026-06-23T09:38:03.0452946Z         "doc",
2026-06-23T09:38:03.0453057Z         "impl",
2026-06-23T09:38:03.0453251Z         "unit",
2026-06-23T09:38:03.0453352Z         "int"
2026-06-23T09:38:03.0453457Z       ],
2026-06-23T09:38:03.0453561Z       "stages": {
2026-06-23T09:38:03.0453667Z         "doc": {
2026-06-23T09:38:03.0453771Z           "complete": true,
2026-06-23T09:38:03.0453881Z           "evidence": [
2026-06-23T09:38:03.0453972Z             {
2026-06-23T09:38:03.0454096Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0454210Z               "line": 355
2026-06-23T09:38:03.0454306Z             }
2026-06-23T09:38:03.0454409Z           ]
2026-06-23T09:38:03.0454510Z         },
2026-06-23T09:38:03.0454621Z         "impl": {
2026-06-23T09:38:03.0454729Z           "complete": true,
2026-06-23T09:38:03.0454845Z           "evidence": [
2026-06-23T09:38:03.0454945Z             {
2026-06-23T09:38:03.0455096Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.0455205Z               "line": 41
2026-06-23T09:38:03.0455306Z             },
2026-06-23T09:38:03.0455419Z             {
2026-06-23T09:38:03.0455544Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0455654Z               "line": 738
2026-06-23T09:38:03.0455748Z             }
2026-06-23T09:38:03.0455855Z           ]
2026-06-23T09:38:03.0455959Z         },
2026-06-23T09:38:03.0456058Z         "int": {
2026-06-23T09:38:03.0456174Z           "complete": true,
2026-06-23T09:38:03.0456283Z           "evidence": [
2026-06-23T09:38:03.0456387Z             {
2026-06-23T09:38:03.0456537Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0456640Z               "line": 922
2026-06-23T09:38:03.0456750Z             }
2026-06-23T09:38:03.0456852Z           ]
2026-06-23T09:38:03.0456950Z         },
2026-06-23T09:38:03.0457050Z         "unit": {
2026-06-23T09:38:03.0457157Z           "complete": true,
2026-06-23T09:38:03.0457270Z           "evidence": [
2026-06-23T09:38:03.0457374Z             {
2026-06-23T09:38:03.0457512Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.0457624Z               "line": 205
2026-06-23T09:38:03.0457728Z             }
2026-06-23T09:38:03.0457830Z           ]
2026-06-23T09:38:03.0457920Z         }
2026-06-23T09:38:03.0458015Z       }
2026-06-23T09:38:03.0458120Z     },
2026-06-23T09:38:03.0458216Z     {
2026-06-23T09:38:03.0458335Z       "id": "REQ-MANIFEST-1",
2026-06-23T09:38:03.0458550Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-23T09:38:03.0458654Z       "requiredStages": [
2026-06-23T09:38:03.0458760Z         "doc",
2026-06-23T09:38:03.0458864Z         "impl",
2026-06-23T09:38:03.0459041Z         "unit"
2026-06-23T09:38:03.0459141Z       ],
2026-06-23T09:38:03.0459245Z       "stages": {
2026-06-23T09:38:03.0459356Z         "doc": {
2026-06-23T09:38:03.0459465Z           "complete": true,
2026-06-23T09:38:03.0459575Z           "evidence": [
2026-06-23T09:38:03.0459676Z             {
2026-06-23T09:38:03.0459803Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.0459908Z               "line": 19
2026-06-23T09:38:03.0460014Z             }
2026-06-23T09:38:03.0460114Z           ]
2026-06-23T09:38:03.0460213Z         },
2026-06-23T09:38:03.0460317Z         "impl": {
2026-06-23T09:38:03.0460431Z           "complete": true,
2026-06-23T09:38:03.0460535Z           "evidence": [
2026-06-23T09:38:03.0460644Z             {
2026-06-23T09:38:03.0460792Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0460905Z               "line": 18
2026-06-23T09:38:03.0461007Z             }
2026-06-23T09:38:03.0461117Z           ]
2026-06-23T09:38:03.0461225Z         },
2026-06-23T09:38:03.0461431Z         "int": {
2026-06-23T09:38:03.0461545Z           "complete": false,
2026-06-23T09:38:03.0461656Z           "evidence": []
2026-06-23T09:38:03.0464078Z         },
2026-06-23T09:38:03.0464217Z         "unit": {
2026-06-23T09:38:03.0464331Z           "complete": true,
2026-06-23T09:38:03.0464446Z           "evidence": [
2026-06-23T09:38:03.0464547Z             {
2026-06-23T09:38:03.0464857Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0464965Z               "line": 1076
2026-06-23T09:38:03.0465070Z             },
2026-06-23T09:38:03.0465162Z             {
2026-06-23T09:38:03.0465318Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0465429Z               "line": 1372
2026-06-23T09:38:03.0465525Z             },
2026-06-23T09:38:03.0465628Z             {
2026-06-23T09:38:03.0465775Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0465891Z               "line": 1384
2026-06-23T09:38:03.0465984Z             },
2026-06-23T09:38:03.0466100Z             {
2026-06-23T09:38:03.0466248Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0466356Z               "line": 1395
2026-06-23T09:38:03.0466463Z             },
2026-06-23T09:38:03.0466563Z             {
2026-06-23T09:38:03.0466705Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0466810Z               "line": 1412
2026-06-23T09:38:03.0466906Z             },
2026-06-23T09:38:03.0467010Z             {
2026-06-23T09:38:03.0467154Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0467267Z               "line": 1426
2026-06-23T09:38:03.0467369Z             },
2026-06-23T09:38:03.0467469Z             {
2026-06-23T09:38:03.0467610Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0467717Z               "line": 1542
2026-06-23T09:38:03.0467825Z             },
2026-06-23T09:38:03.0467925Z             {
2026-06-23T09:38:03.0468077Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0468184Z               "line": 1557
2026-06-23T09:38:03.0468284Z             },
2026-06-23T09:38:03.0468390Z             {
2026-06-23T09:38:03.0468528Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0468628Z               "line": 1668
2026-06-23T09:38:03.0468729Z             },
2026-06-23T09:38:03.0468833Z             {
2026-06-23T09:38:03.0469062Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0469176Z               "line": 1679
2026-06-23T09:38:03.0469277Z             }
2026-06-23T09:38:03.0469368Z           ]
2026-06-23T09:38:03.0469472Z         }
2026-06-23T09:38:03.0469576Z       }
2026-06-23T09:38:03.0469678Z     },
2026-06-23T09:38:03.0469773Z     {
2026-06-23T09:38:03.0469891Z       "id": "REQ-MANIFEST-2",
2026-06-23T09:38:03.0470454Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-23T09:38:03.0470574Z       "requiredStages": [
2026-06-23T09:38:03.0470683Z         "doc",
2026-06-23T09:38:03.0470787Z         "impl",
2026-06-23T09:38:03.0470892Z         "unit"
2026-06-23T09:38:03.0470996Z       ],
2026-06-23T09:38:03.0471090Z       "stages": {
2026-06-23T09:38:03.0471190Z         "doc": {
2026-06-23T09:38:03.0471305Z           "complete": true,
2026-06-23T09:38:03.0471414Z           "evidence": [
2026-06-23T09:38:03.0471519Z             {
2026-06-23T09:38:03.0471643Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0471743Z               "line": 75
2026-06-23T09:38:03.0471848Z             }
2026-06-23T09:38:03.0471953Z           ]
2026-06-23T09:38:03.0472048Z         },
2026-06-23T09:38:03.0472158Z         "impl": {
2026-06-23T09:38:03.0472272Z           "complete": true,
2026-06-23T09:38:03.0472382Z           "evidence": [
2026-06-23T09:38:03.0472483Z             {
2026-06-23T09:38:03.0472639Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0472865Z               "line": 82
2026-06-23T09:38:03.0472973Z             },
2026-06-23T09:38:03.0473078Z             {
2026-06-23T09:38:03.0473227Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0473330Z               "line": 15
2026-06-23T09:38:03.0473430Z             },
2026-06-23T09:38:03.0473534Z             {
2026-06-23T09:38:03.0473780Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0473886Z               "line": 65
2026-06-23T09:38:03.0473985Z             },
2026-06-23T09:38:03.0474085Z             {
2026-06-23T09:38:03.0474234Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0474342Z               "line": 83
2026-06-23T09:38:03.0474449Z             },
2026-06-23T09:38:03.0474553Z             {
2026-06-23T09:38:03.0474681Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0474797Z               "line": 183
2026-06-23T09:38:03.0474891Z             },
2026-06-23T09:38:03.0475001Z             {
2026-06-23T09:38:03.0475135Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0475249Z               "line": 527
2026-06-23T09:38:03.0475354Z             },
2026-06-23T09:38:03.0475450Z             {
2026-06-23T09:38:03.0475592Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0475703Z               "line": 553
2026-06-23T09:38:03.0475807Z             },
2026-06-23T09:38:03.0475903Z             {
2026-06-23T09:38:03.0476047Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0476155Z               "line": 671
2026-06-23T09:38:03.0476249Z             },
2026-06-23T09:38:03.0476355Z             {
2026-06-23T09:38:03.0476493Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0476597Z               "line": 696
2026-06-23T09:38:03.0476703Z             },
2026-06-23T09:38:03.0476803Z             {
2026-06-23T09:38:03.0476941Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0477042Z               "line": 719
2026-06-23T09:38:03.0477146Z             },
2026-06-23T09:38:03.0477246Z             {
2026-06-23T09:38:03.0477390Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0477494Z               "line": 734
2026-06-23T09:38:03.0477594Z             },
2026-06-23T09:38:03.0477700Z             {
2026-06-23T09:38:03.0477828Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0477939Z               "line": 6231
2026-06-23T09:38:03.0478029Z             },
2026-06-23T09:38:03.0478133Z             {
2026-06-23T09:38:03.0478263Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0478371Z               "line": 6245
2026-06-23T09:38:03.0478475Z             },
2026-06-23T09:38:03.0478575Z             {
2026-06-23T09:38:03.0478698Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0478802Z               "line": 6279
2026-06-23T09:38:03.0478912Z             }
2026-06-23T09:38:03.0479102Z           ]
2026-06-23T09:38:03.0479202Z         },
2026-06-23T09:38:03.0479312Z         "int": {
2026-06-23T09:38:03.0479421Z           "complete": false,
2026-06-23T09:38:03.0479527Z           "evidence": []
2026-06-23T09:38:03.0479627Z         },
2026-06-23T09:38:03.0479731Z         "unit": {
2026-06-23T09:38:03.0479842Z           "complete": true,
2026-06-23T09:38:03.0479956Z           "evidence": [
2026-06-23T09:38:03.0480051Z             {
2026-06-23T09:38:03.0480195Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.0480303Z               "line": 921
2026-06-23T09:38:03.0480408Z             },
2026-06-23T09:38:03.0480510Z             {
2026-06-23T09:38:03.0480656Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0480757Z               "line": 211
2026-06-23T09:38:03.0480858Z             },
2026-06-23T09:38:03.0480952Z             {
2026-06-23T09:38:03.0481091Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0481323Z               "line": 272
2026-06-23T09:38:03.0481428Z             },
2026-06-23T09:38:03.0481533Z             {
2026-06-23T09:38:03.0481678Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0481788Z               "line": 313
2026-06-23T09:38:03.0481889Z             },
2026-06-23T09:38:03.0481993Z             {
2026-06-23T09:38:03.0482218Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0482327Z               "line": 325
2026-06-23T09:38:03.0482423Z             },
2026-06-23T09:38:03.0482523Z             {
2026-06-23T09:38:03.0482670Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0482776Z               "line": 336
2026-06-23T09:38:03.0482880Z             },
2026-06-23T09:38:03.0482980Z             {
2026-06-23T09:38:03.0483124Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0483228Z               "line": 345
2026-06-23T09:38:03.0483323Z             },
2026-06-23T09:38:03.0483434Z             {
2026-06-23T09:38:03.0483571Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0483687Z               "line": 361
2026-06-23T09:38:03.0483782Z             },
2026-06-23T09:38:03.0483871Z             {
2026-06-23T09:38:03.0484013Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0484122Z               "line": 444
2026-06-23T09:38:03.0484231Z             },
2026-06-23T09:38:03.0484331Z             {
2026-06-23T09:38:03.0484484Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0484592Z               "line": 958
2026-06-23T09:38:03.0484694Z             },
2026-06-23T09:38:03.0484785Z             {
2026-06-23T09:38:03.0484917Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0485028Z               "line": 982
2026-06-23T09:38:03.0485132Z             },
2026-06-23T09:38:03.0485222Z             {
2026-06-23T09:38:03.0485366Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0485476Z               "line": 1008
2026-06-23T09:38:03.0485585Z             },
2026-06-23T09:38:03.0485681Z             {
2026-06-23T09:38:03.0485814Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0485924Z               "line": 1027
2026-06-23T09:38:03.0486029Z             },
2026-06-23T09:38:03.0486134Z             {
2026-06-23T09:38:03.0486273Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0486376Z               "line": 1058
2026-06-23T09:38:03.0486472Z             },
2026-06-23T09:38:03.0486573Z             {
2026-06-23T09:38:03.0486705Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:03.0486814Z               "line": 309
2026-06-23T09:38:03.0486915Z             },
2026-06-23T09:38:03.0487016Z             {
2026-06-23T09:38:03.0487147Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:03.0487249Z               "line": 606
2026-06-23T09:38:03.0487359Z             },
2026-06-23T09:38:03.0487457Z             {
2026-06-23T09:38:03.0487587Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0487692Z               "line": 10148
2026-06-23T09:38:03.0487796Z             },
2026-06-23T09:38:03.0487897Z             {
2026-06-23T09:38:03.0488016Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0488120Z               "line": 11096
2026-06-23T09:38:03.0488222Z             }
2026-06-23T09:38:03.0488326Z           ]
2026-06-23T09:38:03.0488421Z         }
2026-06-23T09:38:03.0488522Z       }
2026-06-23T09:38:03.0488626Z     },
2026-06-23T09:38:03.0488712Z     {
2026-06-23T09:38:03.0488833Z       "id": "REQ-MANIFEST-3",
2026-06-23T09:38:03.0489568Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-23T09:38:03.0489690Z       "requiredStages": [
2026-06-23T09:38:03.0489901Z         "doc",
2026-06-23T09:38:03.0490005Z         "impl",
2026-06-23T09:38:03.0490102Z         "unit"
2026-06-23T09:38:03.0490197Z       ],
2026-06-23T09:38:03.0490301Z       "stages": {
2026-06-23T09:38:03.0490397Z         "doc": {
2026-06-23T09:38:03.0490512Z           "complete": true,
2026-06-23T09:38:03.0490616Z           "evidence": [
2026-06-23T09:38:03.0490812Z             {
2026-06-23T09:38:03.0490936Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0491041Z               "line": 81
2026-06-23T09:38:03.0491146Z             }
2026-06-23T09:38:03.0491246Z           ]
2026-06-23T09:38:03.0491341Z         },
2026-06-23T09:38:03.0491447Z         "impl": {
2026-06-23T09:38:03.0491555Z           "complete": true,
2026-06-23T09:38:03.0491666Z           "evidence": [
2026-06-23T09:38:03.0491762Z             {
2026-06-23T09:38:03.0491917Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0492026Z               "line": 92
2026-06-23T09:38:03.0492121Z             },
2026-06-23T09:38:03.0492233Z             {
2026-06-23T09:38:03.0492377Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0492483Z               "line": 101
2026-06-23T09:38:03.0492577Z             },
2026-06-23T09:38:03.0492693Z             {
2026-06-23T09:38:03.0492835Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0492934Z               "line": 132
2026-06-23T09:38:03.0493041Z             },
2026-06-23T09:38:03.0493140Z             {
2026-06-23T09:38:03.0493283Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0493379Z               "line": 577
2026-06-23T09:38:03.0493483Z             },
2026-06-23T09:38:03.0493588Z             {
2026-06-23T09:38:03.0493731Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0493840Z               "line": 633
2026-06-23T09:38:03.0493937Z             },
2026-06-23T09:38:03.0494041Z             {
2026-06-23T09:38:03.0494170Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0494276Z               "line": 6292
2026-06-23T09:38:03.0494379Z             },
2026-06-23T09:38:03.0494469Z             {
2026-06-23T09:38:03.0494593Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0494701Z               "line": 6340
2026-06-23T09:38:03.0494805Z             }
2026-06-23T09:38:03.0494905Z           ]
2026-06-23T09:38:03.0495002Z         },
2026-06-23T09:38:03.0495105Z         "int": {
2026-06-23T09:38:03.0495215Z           "complete": false,
2026-06-23T09:38:03.0495325Z           "evidence": []
2026-06-23T09:38:03.0495425Z         },
2026-06-23T09:38:03.0495530Z         "unit": {
2026-06-23T09:38:03.0495640Z           "complete": true,
2026-06-23T09:38:03.0495749Z           "evidence": [
2026-06-23T09:38:03.0495850Z             {
2026-06-23T09:38:03.0495993Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0496107Z               "line": 371
2026-06-23T09:38:03.0496209Z             },
2026-06-23T09:38:03.0496317Z             {
2026-06-23T09:38:03.0496460Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0496579Z               "line": 429
2026-06-23T09:38:03.0496674Z             },
2026-06-23T09:38:03.0496770Z             {
2026-06-23T09:38:03.0496904Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0497018Z               "line": 1082
2026-06-23T09:38:03.0497119Z             },
2026-06-23T09:38:03.0497214Z             {
2026-06-23T09:38:03.0497346Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0497450Z               "line": 10241
2026-06-23T09:38:03.0497542Z             }
2026-06-23T09:38:03.0497646Z           ]
2026-06-23T09:38:03.0497746Z         }
2026-06-23T09:38:03.0497847Z       }
2026-06-23T09:38:03.0497947Z     },
2026-06-23T09:38:03.0498051Z     {
2026-06-23T09:38:03.0498171Z       "id": "REQ-MANIFEST-4",
2026-06-23T09:38:03.0498886Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-23T09:38:03.0499182Z       "requiredStages": [
2026-06-23T09:38:03.0499282Z         "doc",
2026-06-23T09:38:03.0499393Z         "impl",
2026-06-23T09:38:03.0499487Z         "unit"
2026-06-23T09:38:03.0499762Z       ],
2026-06-23T09:38:03.0499860Z       "stages": {
2026-06-23T09:38:03.0499965Z         "doc": {
2026-06-23T09:38:03.0500085Z           "complete": true,
2026-06-23T09:38:03.0500189Z           "evidence": [
2026-06-23T09:38:03.0500289Z             {
2026-06-23T09:38:03.0500414Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0500518Z               "line": 88
2026-06-23T09:38:03.0500623Z             }
2026-06-23T09:38:03.0500719Z           ]
2026-06-23T09:38:03.0500823Z         },
2026-06-23T09:38:03.0500923Z         "impl": {
2026-06-23T09:38:03.0501034Z           "complete": true,
2026-06-23T09:38:03.0501138Z           "evidence": [
2026-06-23T09:38:03.0501243Z             {
2026-06-23T09:38:03.0501400Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0501510Z               "line": 100
2026-06-23T09:38:03.0501616Z             },
2026-06-23T09:38:03.0501715Z             {
2026-06-23T09:38:03.0501867Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0501983Z               "line": 183
2026-06-23T09:38:03.0502082Z             },
2026-06-23T09:38:03.0502187Z             {
2026-06-23T09:38:03.0502317Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0502425Z               "line": 83
2026-06-23T09:38:03.0502524Z             },
2026-06-23T09:38:03.0502629Z             {
2026-06-23T09:38:03.0502765Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0502913Z               "line": 629
2026-06-23T09:38:03.0503014Z             },
2026-06-23T09:38:03.0503113Z             {
2026-06-23T09:38:03.0503262Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0503372Z               "line": 654
2026-06-23T09:38:03.0503480Z             }
2026-06-23T09:38:03.0503586Z           ]
2026-06-23T09:38:03.0503677Z         },
2026-06-23T09:38:03.0503780Z         "int": {
2026-06-23T09:38:03.0503887Z           "complete": false,
2026-06-23T09:38:03.0504000Z           "evidence": []
2026-06-23T09:38:03.0504105Z         },
2026-06-23T09:38:03.0504206Z         "unit": {
2026-06-23T09:38:03.0504319Z           "complete": true,
2026-06-23T09:38:03.0504420Z           "evidence": [
2026-06-23T09:38:03.0504526Z             {
2026-06-23T09:38:03.0504677Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0504773Z               "line": 1492
2026-06-23T09:38:03.0504874Z             },
2026-06-23T09:38:03.0504982Z             {
2026-06-23T09:38:03.0505125Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0505234Z               "line": 1525
2026-06-23T09:38:03.0505327Z             },
2026-06-23T09:38:03.0505432Z             {
2026-06-23T09:38:03.0505577Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0505685Z               "line": 988
2026-06-23T09:38:03.0505785Z             }
2026-06-23T09:38:03.0505881Z           ]
2026-06-23T09:38:03.0505985Z         }
2026-06-23T09:38:03.0506091Z       }
2026-06-23T09:38:03.0506190Z     },
2026-06-23T09:38:03.0506290Z     {
2026-06-23T09:38:03.0506410Z       "id": "REQ-MANIFEST-5",
2026-06-23T09:38:03.0509403Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-23T09:38:03.0509732Z       "requiredStages": [
2026-06-23T09:38:03.0509832Z         "doc",
2026-06-23T09:38:03.0509928Z         "impl",
2026-06-23T09:38:03.0510033Z         "unit"
2026-06-23T09:38:03.0510132Z       ],
2026-06-23T09:38:03.0510241Z       "stages": {
2026-06-23T09:38:03.0510346Z         "doc": {
2026-06-23T09:38:03.0510463Z           "complete": true,
2026-06-23T09:38:03.0510573Z           "evidence": [
2026-06-23T09:38:03.0510679Z             {
2026-06-23T09:38:03.0510801Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0510902Z               "line": 83
2026-06-23T09:38:03.0511012Z             }
2026-06-23T09:38:03.0511107Z           ]
2026-06-23T09:38:03.0511212Z         },
2026-06-23T09:38:03.0511322Z         "impl": {
2026-06-23T09:38:03.0511436Z           "complete": true,
2026-06-23T09:38:03.0511556Z           "evidence": [
2026-06-23T09:38:03.0511651Z             {
2026-06-23T09:38:03.0511798Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0511908Z               "line": 120
2026-06-23T09:38:03.0512013Z             }
2026-06-23T09:38:03.0512108Z           ]
2026-06-23T09:38:03.0512209Z         },
2026-06-23T09:38:03.0512309Z         "int": {
2026-06-23T09:38:03.0512413Z           "complete": false,
2026-06-23T09:38:03.0512524Z           "evidence": []
2026-06-23T09:38:03.0512623Z         },
2026-06-23T09:38:03.0512733Z         "unit": {
2026-06-23T09:38:03.0512844Z           "complete": true,
2026-06-23T09:38:03.0512952Z           "evidence": [
2026-06-23T09:38:03.0513060Z             {
2026-06-23T09:38:03.0513194Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-23T09:38:03.0513302Z               "line": 404
2026-06-23T09:38:03.0513411Z             },
2026-06-23T09:38:03.0513517Z             {
2026-06-23T09:38:03.0513664Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0513774Z               "line": 1155
2026-06-23T09:38:03.0513879Z             },
2026-06-23T09:38:03.0513979Z             {
2026-06-23T09:38:03.0514127Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0514237Z               "line": 1184
2026-06-23T09:38:03.0514350Z             },
2026-06-23T09:38:03.0514456Z             {
2026-06-23T09:38:03.0514594Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0514708Z               "line": 1224
2026-06-23T09:38:03.0514809Z             },
2026-06-23T09:38:03.0514918Z             {
2026-06-23T09:38:03.0515067Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0515181Z               "line": 1239
2026-06-23T09:38:03.0515280Z             }
2026-06-23T09:38:03.0515382Z           ]
2026-06-23T09:38:03.0515491Z         }
2026-06-23T09:38:03.0515594Z       }
2026-06-23T09:38:03.0515699Z     },
2026-06-23T09:38:03.0515799Z     {
2026-06-23T09:38:03.0515935Z       "id": "REQ-MANIFEST-6",
2026-06-23T09:38:03.0518147Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-23T09:38:03.0518367Z       "requiredStages": [
2026-06-23T09:38:03.0518466Z         "doc",
2026-06-23T09:38:03.0518571Z         "unit"
2026-06-23T09:38:03.0518672Z       ],
2026-06-23T09:38:03.0518780Z       "stages": {
2026-06-23T09:38:03.0518886Z         "doc": {
2026-06-23T09:38:03.0519081Z           "complete": true,
2026-06-23T09:38:03.0519296Z           "evidence": [
2026-06-23T09:38:03.0519396Z             {
2026-06-23T09:38:03.0519506Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0519616Z               "line": 150
2026-06-23T09:38:03.0519715Z             }
2026-06-23T09:38:03.0519820Z           ]
2026-06-23T09:38:03.0519921Z         },
2026-06-23T09:38:03.0520030Z         "impl": {
2026-06-23T09:38:03.0520130Z           "complete": false,
2026-06-23T09:38:03.0520241Z           "evidence": []
2026-06-23T09:38:03.0520340Z         },
2026-06-23T09:38:03.0520445Z         "int": {
2026-06-23T09:38:03.0520556Z           "complete": false,
2026-06-23T09:38:03.0520664Z           "evidence": []
2026-06-23T09:38:03.0520763Z         },
2026-06-23T09:38:03.0520864Z         "unit": {
2026-06-23T09:38:03.0520980Z           "complete": true,
2026-06-23T09:38:03.0521089Z           "evidence": [
2026-06-23T09:38:03.0521195Z             {
2026-06-23T09:38:03.0521347Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.0521462Z               "line": 1261
2026-06-23T09:38:03.0521567Z             }
2026-06-23T09:38:03.0521657Z           ]
2026-06-23T09:38:03.0521763Z         }
2026-06-23T09:38:03.0521863Z       }
2026-06-23T09:38:03.0521967Z     },
2026-06-23T09:38:03.0522073Z     {
2026-06-23T09:38:03.0522177Z       "id": "REQ-MANIFEST-7",
2026-06-23T09:38:03.0525211Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-23T09:38:03.0525350Z       "requiredStages": [
2026-06-23T09:38:03.0525454Z         "doc",
2026-06-23T09:38:03.0525559Z         "impl",
2026-06-23T09:38:03.0525660Z         "unit"
2026-06-23T09:38:03.0525759Z       ],
2026-06-23T09:38:03.0525869Z       "stages": {
2026-06-23T09:38:03.0525975Z         "doc": {
2026-06-23T09:38:03.0526093Z           "complete": true,
2026-06-23T09:38:03.0526197Z           "evidence": [
2026-06-23T09:38:03.0526307Z             {
2026-06-23T09:38:03.0526434Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.0526538Z               "line": 43
2026-06-23T09:38:03.0526644Z             }
2026-06-23T09:38:03.0526753Z           ]
2026-06-23T09:38:03.0526857Z         },
2026-06-23T09:38:03.0526964Z         "impl": {
2026-06-23T09:38:03.0527068Z           "complete": true,
2026-06-23T09:38:03.0527172Z           "evidence": [
2026-06-23T09:38:03.0527273Z             {
2026-06-23T09:38:03.0527420Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.0527526Z               "line": 54
2026-06-23T09:38:03.0527636Z             }
2026-06-23T09:38:03.0527735Z           ]
2026-06-23T09:38:03.0527845Z         },
2026-06-23T09:38:03.0527950Z         "int": {
2026-06-23T09:38:03.0528055Z           "complete": false,
2026-06-23T09:38:03.0528165Z           "evidence": []
2026-06-23T09:38:03.0528370Z         },
2026-06-23T09:38:03.0528480Z         "unit": {
2026-06-23T09:38:03.0528589Z           "complete": true,
2026-06-23T09:38:03.0528699Z           "evidence": [
2026-06-23T09:38:03.0528805Z             {
2026-06-23T09:38:03.0529021Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0529242Z               "line": 1685
2026-06-23T09:38:03.0529331Z             }
2026-06-23T09:38:03.0529436Z           ]
2026-06-23T09:38:03.0529523Z         }
2026-06-23T09:38:03.0529632Z       }
2026-06-23T09:38:03.0529736Z     },
2026-06-23T09:38:03.0529838Z     {
2026-06-23T09:38:03.0529947Z       "id": "REQ-MANIFEST-8",
2026-06-23T09:38:03.0532127Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-23T09:38:03.0532270Z       "requiredStages": [
2026-06-23T09:38:03.0532381Z         "doc",
2026-06-23T09:38:03.0532480Z         "impl",
2026-06-23T09:38:03.0532585Z         "unit",
2026-06-23T09:38:03.0532691Z         "int"
2026-06-23T09:38:03.0532790Z       ],
2026-06-23T09:38:03.0532899Z       "stages": {
2026-06-23T09:38:03.0532996Z         "doc": {
2026-06-23T09:38:03.0533114Z           "complete": true,
2026-06-23T09:38:03.0533219Z           "evidence": [
2026-06-23T09:38:03.0533320Z             {
2026-06-23T09:38:03.0533443Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0533543Z               "line": 193
2026-06-23T09:38:03.0533650Z             },
2026-06-23T09:38:03.0533748Z             {
2026-06-23T09:38:03.0533877Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.0533983Z               "line": 54
2026-06-23T09:38:03.0534086Z             }
2026-06-23T09:38:03.0534185Z           ]
2026-06-23T09:38:03.0534272Z         },
2026-06-23T09:38:03.0534384Z         "impl": {
2026-06-23T09:38:03.0534498Z           "complete": true,
2026-06-23T09:38:03.0534604Z           "evidence": [
2026-06-23T09:38:03.0534718Z             {
2026-06-23T09:38:03.0534865Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0534971Z               "line": 222
2026-06-23T09:38:03.0535070Z             },
2026-06-23T09:38:03.0535175Z             {
2026-06-23T09:38:03.0535304Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:03.0535418Z               "line": 306
2026-06-23T09:38:03.0535528Z             }
2026-06-23T09:38:03.0535629Z           ]
2026-06-23T09:38:03.0535738Z         },
2026-06-23T09:38:03.0535839Z         "int": {
2026-06-23T09:38:03.0535958Z           "complete": true,
2026-06-23T09:38:03.0536067Z           "evidence": [
2026-06-23T09:38:03.0536173Z             {
2026-06-23T09:38:03.0536324Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-23T09:38:03.0536434Z               "line": 18
2026-06-23T09:38:03.0536545Z             }
2026-06-23T09:38:03.0536639Z           ]
2026-06-23T09:38:03.0536738Z         },
2026-06-23T09:38:03.0536844Z         "unit": {
2026-06-23T09:38:03.0536951Z           "complete": true,
2026-06-23T09:38:03.0537055Z           "evidence": [
2026-06-23T09:38:03.0537156Z             {
2026-06-23T09:38:03.0537308Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0537418Z               "line": 1703
2026-06-23T09:38:03.0537524Z             },
2026-06-23T09:38:03.0537623Z             {
2026-06-23T09:38:03.0537766Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0537976Z               "line": 316
2026-06-23T09:38:03.0538081Z             },
2026-06-23T09:38:03.0538186Z             {
2026-06-23T09:38:03.0538333Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0538439Z               "line": 332
2026-06-23T09:38:03.0538543Z             },
2026-06-23T09:38:03.0538638Z             {
2026-06-23T09:38:03.0538858Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.0539035Z               "line": 345
2026-06-23T09:38:03.0539145Z             },
2026-06-23T09:38:03.0539244Z             {
2026-06-23T09:38:03.0539389Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:03.0539492Z               "line": 422
2026-06-23T09:38:03.0539586Z             },
2026-06-23T09:38:03.0539691Z             {
2026-06-23T09:38:03.0539826Z               "path": "crates/spt-store/src/proc.rs",
2026-06-23T09:38:03.0539929Z               "line": 436
2026-06-23T09:38:03.0540035Z             }
2026-06-23T09:38:03.0540135Z           ]
2026-06-23T09:38:03.0540234Z         }
2026-06-23T09:38:03.0540336Z       }
2026-06-23T09:38:03.0540440Z     },
2026-06-23T09:38:03.0540540Z     {
2026-06-23T09:38:03.0540650Z       "id": "REQ-MESH-1",
2026-06-23T09:38:03.0542749Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-23T09:38:03.0542883Z       "requiredStages": [
2026-06-23T09:38:03.0542997Z         "impl",
2026-06-23T09:38:03.0543092Z         "unit",
2026-06-23T09:38:03.0543198Z         "int"
2026-06-23T09:38:03.0543289Z       ],
2026-06-23T09:38:03.0543398Z       "stages": {
2026-06-23T09:38:03.0543507Z         "doc": {
2026-06-23T09:38:03.0543622Z           "complete": false,
2026-06-23T09:38:03.0543736Z           "evidence": []
2026-06-23T09:38:03.0543842Z         },
2026-06-23T09:38:03.0543946Z         "impl": {
2026-06-23T09:38:03.0544056Z           "complete": true,
2026-06-23T09:38:03.0544166Z           "evidence": [
2026-06-23T09:38:03.0544271Z             {
2026-06-23T09:38:03.0544404Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.0544520Z               "line": 922
2026-06-23T09:38:03.0544623Z             },
2026-06-23T09:38:03.0544727Z             {
2026-06-23T09:38:03.0544875Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0544982Z               "line": 38
2026-06-23T09:38:03.0545086Z             },
2026-06-23T09:38:03.0545188Z             {
2026-06-23T09:38:03.0545344Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0545454Z               "line": 161
2026-06-23T09:38:03.0545559Z             },
2026-06-23T09:38:03.0545659Z             {
2026-06-23T09:38:03.0545808Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0545917Z               "line": 206
2026-06-23T09:38:03.0546021Z             },
2026-06-23T09:38:03.0546118Z             {
2026-06-23T09:38:03.0546265Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0546379Z               "line": 57
2026-06-23T09:38:03.0546485Z             },
2026-06-23T09:38:03.0546584Z             {
2026-06-23T09:38:03.0546748Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0546861Z               "line": 24
2026-06-23T09:38:03.0546966Z             },
2026-06-23T09:38:03.0547067Z             {
2026-06-23T09:38:03.0547228Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0547436Z               "line": 142
2026-06-23T09:38:03.0547544Z             },
2026-06-23T09:38:03.0547644Z             {
2026-06-23T09:38:03.0547793Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0547892Z               "line": 162
2026-06-23T09:38:03.0547992Z             }
2026-06-23T09:38:03.0548207Z           ]
2026-06-23T09:38:03.0548312Z         },
2026-06-23T09:38:03.0548422Z         "int": {
2026-06-23T09:38:03.0548536Z           "complete": true,
2026-06-23T09:38:03.0548641Z           "evidence": [
2026-06-23T09:38:03.0548746Z             {
2026-06-23T09:38:03.0548902Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-23T09:38:03.0549099Z               "line": 67
2026-06-23T09:38:03.0549204Z             },
2026-06-23T09:38:03.0549300Z             {
2026-06-23T09:38:03.0549451Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-23T09:38:03.0549551Z               "line": 93
2026-06-23T09:38:03.0549653Z             },
2026-06-23T09:38:03.0549761Z             {
2026-06-23T09:38:03.0549910Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-23T09:38:03.0550020Z               "line": 117
2026-06-23T09:38:03.0550123Z             },
2026-06-23T09:38:03.0550227Z             {
2026-06-23T09:38:03.0550381Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-23T09:38:03.0550494Z               "line": 134
2026-06-23T09:38:03.0550586Z             }
2026-06-23T09:38:03.0550681Z           ]
2026-06-23T09:38:03.0550790Z         },
2026-06-23T09:38:03.0550896Z         "unit": {
2026-06-23T09:38:03.0551005Z           "complete": true,
2026-06-23T09:38:03.0551110Z           "evidence": [
2026-06-23T09:38:03.0551220Z             {
2026-06-23T09:38:03.0551367Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0551477Z               "line": 427
2026-06-23T09:38:03.0551583Z             },
2026-06-23T09:38:03.0551682Z             {
2026-06-23T09:38:03.0551840Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0551945Z               "line": 376
2026-06-23T09:38:03.0554460Z             },
2026-06-23T09:38:03.0554587Z             {
2026-06-23T09:38:03.0554770Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0554887Z               "line": 412
2026-06-23T09:38:03.0555003Z             },
2026-06-23T09:38:03.0555099Z             {
2026-06-23T09:38:03.0555259Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0555368Z               "line": 427
2026-06-23T09:38:03.0555473Z             },
2026-06-23T09:38:03.0555576Z             {
2026-06-23T09:38:03.0555719Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0555820Z               "line": 438
2026-06-23T09:38:03.0555923Z             },
2026-06-23T09:38:03.0556024Z             {
2026-06-23T09:38:03.0556177Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0556290Z               "line": 449
2026-06-23T09:38:03.0556392Z             },
2026-06-23T09:38:03.0556492Z             {
2026-06-23T09:38:03.0556634Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0556739Z               "line": 460
2026-06-23T09:38:03.0556830Z             },
2026-06-23T09:38:03.0556939Z             {
2026-06-23T09:38:03.0557092Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0557197Z               "line": 496
2026-06-23T09:38:03.0557303Z             },
2026-06-23T09:38:03.0557402Z             {
2026-06-23T09:38:03.0557555Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0557666Z               "line": 519
2026-06-23T09:38:03.0557759Z             },
2026-06-23T09:38:03.0557867Z             {
2026-06-23T09:38:03.0558015Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0558123Z               "line": 546
2026-06-23T09:38:03.0558358Z             }
2026-06-23T09:38:03.0558457Z           ]
2026-06-23T09:38:03.0558562Z         }
2026-06-23T09:38:03.0558663Z       }
2026-06-23T09:38:03.0558767Z     },
2026-06-23T09:38:03.0558867Z     {
2026-06-23T09:38:03.0559077Z       "id": "REQ-MESH-2",
2026-06-23T09:38:03.0561693Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-23T09:38:03.0561942Z       "requiredStages": [
2026-06-23T09:38:03.0562056Z         "impl",
2026-06-23T09:38:03.0562157Z         "unit",
2026-06-23T09:38:03.0562266Z         "int"
2026-06-23T09:38:03.0562371Z       ],
2026-06-23T09:38:03.0562477Z       "stages": {
2026-06-23T09:38:03.0562585Z         "doc": {
2026-06-23T09:38:03.0562695Z           "complete": false,
2026-06-23T09:38:03.0562806Z           "evidence": []
2026-06-23T09:38:03.0562900Z         },
2026-06-23T09:38:03.0562999Z         "impl": {
2026-06-23T09:38:03.0563109Z           "complete": true,
2026-06-23T09:38:03.0563217Z           "evidence": [
2026-06-23T09:38:03.0563311Z             {
2026-06-23T09:38:03.0563469Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.0563574Z               "line": 757
2026-06-23T09:38:03.0563678Z             },
2026-06-23T09:38:03.0563789Z             {
2026-06-23T09:38:03.0563940Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0564047Z               "line": 118
2026-06-23T09:38:03.0564156Z             },
2026-06-23T09:38:03.0564255Z             {
2026-06-23T09:38:03.0564400Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0564504Z               "line": 347
2026-06-23T09:38:03.0564609Z             },
2026-06-23T09:38:03.0564705Z             {
2026-06-23T09:38:03.0564847Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0564952Z               "line": 389
2026-06-23T09:38:03.0565053Z             },
2026-06-23T09:38:03.0565162Z             {
2026-06-23T09:38:03.0565297Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0565410Z               "line": 403
2026-06-23T09:38:03.0565505Z             },
2026-06-23T09:38:03.0565611Z             {
2026-06-23T09:38:03.0565758Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0565861Z               "line": 492
2026-06-23T09:38:03.0565966Z             },
2026-06-23T09:38:03.0566065Z             {
2026-06-23T09:38:03.0566211Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0566318Z               "line": 507
2026-06-23T09:38:03.0566418Z             },
2026-06-23T09:38:03.0566526Z             {
2026-06-23T09:38:03.0566661Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0566779Z               "line": 534
2026-06-23T09:38:03.0566880Z             },
2026-06-23T09:38:03.0566985Z             {
2026-06-23T09:38:03.0567141Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0567238Z               "line": 207
2026-06-23T09:38:03.0567337Z             },
2026-06-23T09:38:03.0567437Z             {
2026-06-23T09:38:03.0567587Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0567694Z               "line": 755
2026-06-23T09:38:03.0567896Z             },
2026-06-23T09:38:03.0567999Z             {
2026-06-23T09:38:03.0568139Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0568259Z               "line": 816
2026-06-23T09:38:03.0568362Z             },
2026-06-23T09:38:03.0568471Z             {
2026-06-23T09:38:03.0568618Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0568798Z               "line": 869
2026-06-23T09:38:03.0568899Z             },
2026-06-23T09:38:03.0569074Z             {
2026-06-23T09:38:03.0569223Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0569327Z               "line": 891
2026-06-23T09:38:03.0569427Z             },
2026-06-23T09:38:03.0569532Z             {
2026-06-23T09:38:03.0569675Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0569786Z               "line": 122
2026-06-23T09:38:03.0569885Z             },
2026-06-23T09:38:03.0569989Z             {
2026-06-23T09:38:03.0570134Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0570243Z               "line": 44
2026-06-23T09:38:03.0570348Z             },
2026-06-23T09:38:03.0570449Z             {
2026-06-23T09:38:03.0570586Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0570696Z               "line": 184
2026-06-23T09:38:03.0570792Z             },
2026-06-23T09:38:03.0570895Z             {
2026-06-23T09:38:03.0571026Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0571130Z               "line": 211
2026-06-23T09:38:03.0571229Z             },
2026-06-23T09:38:03.0571338Z             {
2026-06-23T09:38:03.0571473Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0571577Z               "line": 251
2026-06-23T09:38:03.0571677Z             },
2026-06-23T09:38:03.0571778Z             {
2026-06-23T09:38:03.0571910Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0572011Z               "line": 275
2026-06-23T09:38:03.0572116Z             },
2026-06-23T09:38:03.0572215Z             {
2026-06-23T09:38:03.0572355Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0572450Z               "line": 289
2026-06-23T09:38:03.0572564Z             },
2026-06-23T09:38:03.0572670Z             {
2026-06-23T09:38:03.0572793Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0572902Z               "line": 300
2026-06-23T09:38:03.0573004Z             },
2026-06-23T09:38:03.0573112Z             {
2026-06-23T09:38:03.0573246Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0573352Z               "line": 313
2026-06-23T09:38:03.0573460Z             }
2026-06-23T09:38:03.0573559Z           ]
2026-06-23T09:38:03.0573655Z         },
2026-06-23T09:38:03.0573744Z         "int": {
2026-06-23T09:38:03.0573852Z           "complete": true,
2026-06-23T09:38:03.0573953Z           "evidence": [
2026-06-23T09:38:03.0574059Z             {
2026-06-23T09:38:03.0574224Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-23T09:38:03.0574330Z               "line": 116
2026-06-23T09:38:03.0574435Z             },
2026-06-23T09:38:03.0574529Z             {
2026-06-23T09:38:03.0574678Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-23T09:38:03.0574787Z               "line": 181
2026-06-23T09:38:03.0574893Z             }
2026-06-23T09:38:03.0574998Z           ]
2026-06-23T09:38:03.0575093Z         },
2026-06-23T09:38:03.0575192Z         "unit": {
2026-06-23T09:38:03.0575303Z           "complete": true,
2026-06-23T09:38:03.0575412Z           "evidence": [
2026-06-23T09:38:03.0575517Z             {
2026-06-23T09:38:03.0575660Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0575774Z               "line": 999
2026-06-23T09:38:03.0575876Z             },
2026-06-23T09:38:03.0575975Z             {
2026-06-23T09:38:03.0576118Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0576341Z               "line": 1016
2026-06-23T09:38:03.0576450Z             },
2026-06-23T09:38:03.0576555Z             {
2026-06-23T09:38:03.0576700Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0576811Z               "line": 1024
2026-06-23T09:38:03.0576911Z             },
2026-06-23T09:38:03.0577010Z             {
2026-06-23T09:38:03.0577249Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0577358Z               "line": 1048
2026-06-23T09:38:03.0577460Z             },
2026-06-23T09:38:03.0577555Z             {
2026-06-23T09:38:03.0577711Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0577822Z               "line": 1499
2026-06-23T09:38:03.0577926Z             },
2026-06-23T09:38:03.0578031Z             {
2026-06-23T09:38:03.0578175Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0578279Z               "line": 347
2026-06-23T09:38:03.0578384Z             },
2026-06-23T09:38:03.0578480Z             {
2026-06-23T09:38:03.0578618Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0578724Z               "line": 370
2026-06-23T09:38:03.0578828Z             },
2026-06-23T09:38:03.0578936Z             {
2026-06-23T09:38:03.0579150Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0579258Z               "line": 407
2026-06-23T09:38:03.0579363Z             },
2026-06-23T09:38:03.0579459Z             {
2026-06-23T09:38:03.0579591Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0579687Z               "line": 431
2026-06-23T09:38:03.0579792Z             },
2026-06-23T09:38:03.0579891Z             {
2026-06-23T09:38:03.0580026Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0580131Z               "line": 483
2026-06-23T09:38:03.0580230Z             },
2026-06-23T09:38:03.0580331Z             {
2026-06-23T09:38:03.0580459Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0580569Z               "line": 499
2026-06-23T09:38:03.0580670Z             },
2026-06-23T09:38:03.0580774Z             {
2026-06-23T09:38:03.0580898Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0581004Z               "line": 514
2026-06-23T09:38:03.0581103Z             },
2026-06-23T09:38:03.0581203Z             {
2026-06-23T09:38:03.0581343Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0581451Z               "line": 531
2026-06-23T09:38:03.0581552Z             }
2026-06-23T09:38:03.0581643Z           ]
2026-06-23T09:38:03.0581746Z         }
2026-06-23T09:38:03.0581851Z       }
2026-06-23T09:38:03.0581951Z     },
2026-06-23T09:38:03.0582052Z     {
2026-06-23T09:38:03.0582165Z       "id": "REQ-MESH-3",
2026-06-23T09:38:03.0583864Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-23T09:38:03.0584001Z       "requiredStages": [
2026-06-23T09:38:03.0584105Z         "impl",
2026-06-23T09:38:03.0584210Z         "unit",
2026-06-23T09:38:03.0584299Z         "int"
2026-06-23T09:38:03.0584408Z       ],
2026-06-23T09:38:03.0584499Z       "stages": {
2026-06-23T09:38:03.0584609Z         "doc": {
2026-06-23T09:38:03.0584732Z           "complete": false,
2026-06-23T09:38:03.0584842Z           "evidence": []
2026-06-23T09:38:03.0584947Z         },
2026-06-23T09:38:03.0585051Z         "impl": {
2026-06-23T09:38:03.0585158Z           "complete": true,
2026-06-23T09:38:03.0585262Z           "evidence": [
2026-06-23T09:38:03.0585463Z             {
2026-06-23T09:38:03.0585619Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:03.0585729Z               "line": 641
2026-06-23T09:38:03.0585825Z             }
2026-06-23T09:38:03.0585924Z           ]
2026-06-23T09:38:03.0586029Z         },
2026-06-23T09:38:03.0586130Z         "int": {
2026-06-23T09:38:03.0586248Z           "complete": true,
2026-06-23T09:38:03.0586469Z           "evidence": [
2026-06-23T09:38:03.0586568Z             {
2026-06-23T09:38:03.0586717Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-23T09:38:03.0586817Z               "line": 373
2026-06-23T09:38:03.0586920Z             },
2026-06-23T09:38:03.0587020Z             {
2026-06-23T09:38:03.0587157Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-23T09:38:03.0587261Z               "line": 436
2026-06-23T09:38:03.0587361Z             }
2026-06-23T09:38:03.0587471Z           ]
2026-06-23T09:38:03.0587571Z         },
2026-06-23T09:38:03.0587680Z         "unit": {
2026-06-23T09:38:03.0587791Z           "complete": true,
2026-06-23T09:38:03.0587895Z           "evidence": [
2026-06-23T09:38:03.0588000Z             {
2026-06-23T09:38:03.0588143Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:03.0588252Z               "line": 910
2026-06-23T09:38:03.0588349Z             }
2026-06-23T09:38:03.0588448Z           ]
2026-06-23T09:38:03.0588548Z         }
2026-06-23T09:38:03.0588644Z       }
2026-06-23T09:38:03.0588749Z     },
2026-06-23T09:38:03.0588849Z     {
2026-06-23T09:38:03.0589031Z       "id": "REQ-MESH-4",
2026-06-23T09:38:03.0591230Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-23T09:38:03.0591358Z       "requiredStages": [
2026-06-23T09:38:03.0591458Z         "impl",
2026-06-23T09:38:03.0591555Z         "unit",
2026-06-23T09:38:03.0591658Z         "int"
2026-06-23T09:38:03.0591758Z       ],
2026-06-23T09:38:03.0591865Z       "stages": {
2026-06-23T09:38:03.0591973Z         "doc": {
2026-06-23T09:38:03.0592088Z           "complete": false,
2026-06-23T09:38:03.0592194Z           "evidence": []
2026-06-23T09:38:03.0592293Z         },
2026-06-23T09:38:03.0592397Z         "impl": {
2026-06-23T09:38:03.0592511Z           "complete": true,
2026-06-23T09:38:03.0592622Z           "evidence": [
2026-06-23T09:38:03.0592725Z             {
2026-06-23T09:38:03.0592879Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T09:38:03.0592988Z               "line": 33
2026-06-23T09:38:03.0593092Z             },
2026-06-23T09:38:03.0593194Z             {
2026-06-23T09:38:03.0593345Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0593456Z               "line": 68
2026-06-23T09:38:03.0593565Z             },
2026-06-23T09:38:03.0593674Z             {
2026-06-23T09:38:03.0593814Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0593913Z               "line": 111
2026-06-23T09:38:03.0594018Z             },
2026-06-23T09:38:03.0594114Z             {
2026-06-23T09:38:03.0594261Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0594371Z               "line": 462
2026-06-23T09:38:03.0594472Z             },
2026-06-23T09:38:03.0594575Z             {
2026-06-23T09:38:03.0594718Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0594935Z               "line": 711
2026-06-23T09:38:03.0595040Z             },
2026-06-23T09:38:03.0595136Z             {
2026-06-23T09:38:03.0595278Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0595388Z               "line": 725
2026-06-23T09:38:03.0595493Z             },
2026-06-23T09:38:03.0595593Z             {
2026-06-23T09:38:03.0595832Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.0595941Z               "line": 132
2026-06-23T09:38:03.0596042Z             },
2026-06-23T09:38:03.0596151Z             {
2026-06-23T09:38:03.0596294Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T09:38:03.0596404Z               "line": 26
2026-06-23T09:38:03.0596504Z             },
2026-06-23T09:38:03.0596603Z             {
2026-06-23T09:38:03.0596747Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T09:38:03.0596852Z               "line": 97
2026-06-23T09:38:03.0596948Z             },
2026-06-23T09:38:03.0597053Z             {
2026-06-23T09:38:03.0597186Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T09:38:03.0597281Z               "line": 119
2026-06-23T09:38:03.0597391Z             },
2026-06-23T09:38:03.0597495Z             {
2026-06-23T09:38:03.0597633Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0597736Z               "line": 82
2026-06-23T09:38:03.0597844Z             },
2026-06-23T09:38:03.0597945Z             {
2026-06-23T09:38:03.0598070Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0598187Z               "line": 111
2026-06-23T09:38:03.0598289Z             },
2026-06-23T09:38:03.0598389Z             {
2026-06-23T09:38:03.0598526Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0598637Z               "line": 232
2026-06-23T09:38:03.0598737Z             },
2026-06-23T09:38:03.0598841Z             {
2026-06-23T09:38:03.0599042Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0599166Z               "line": 245
2026-06-23T09:38:03.0599271Z             },
2026-06-23T09:38:03.0599375Z             {
2026-06-23T09:38:03.0599500Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0599610Z               "line": 5320
2026-06-23T09:38:03.0599718Z             }
2026-06-23T09:38:03.0599815Z           ]
2026-06-23T09:38:03.0599925Z         },
2026-06-23T09:38:03.0600028Z         "int": {
2026-06-23T09:38:03.0600146Z           "complete": true,
2026-06-23T09:38:03.0600252Z           "evidence": [
2026-06-23T09:38:03.0600359Z             {
2026-06-23T09:38:03.0600502Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-23T09:38:03.0600613Z               "line": 98
2026-06-23T09:38:03.0600721Z             },
2026-06-23T09:38:03.0600822Z             {
2026-06-23T09:38:03.0600970Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-23T09:38:03.0601074Z               "line": 140
2026-06-23T09:38:03.0601170Z             }
2026-06-23T09:38:03.0601280Z           ]
2026-06-23T09:38:03.0601379Z         },
2026-06-23T09:38:03.0601490Z         "unit": {
2026-06-23T09:38:03.0601594Z           "complete": true,
2026-06-23T09:38:03.0601703Z           "evidence": [
2026-06-23T09:38:03.0601805Z             {
2026-06-23T09:38:03.0601957Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T09:38:03.0602076Z               "line": 178
2026-06-23T09:38:03.0602172Z             },
2026-06-23T09:38:03.0602281Z             {
2026-06-23T09:38:03.0602434Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T09:38:03.0602538Z               "line": 242
2026-06-23T09:38:03.0602638Z             },
2026-06-23T09:38:03.0602735Z             {
2026-06-23T09:38:03.0602891Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0602999Z               "line": 1079
2026-06-23T09:38:03.0603105Z             },
2026-06-23T09:38:03.0603201Z             {
2026-06-23T09:38:03.0603352Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0603567Z               "line": 1109
2026-06-23T09:38:03.0603677Z             },
2026-06-23T09:38:03.0603782Z             {
2026-06-23T09:38:03.0603929Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-23T09:38:03.0604035Z               "line": 1129
2026-06-23T09:38:03.0604139Z             },
2026-06-23T09:38:03.0604350Z             {
2026-06-23T09:38:03.0604512Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-23T09:38:03.0604621Z               "line": 602
2026-06-23T09:38:03.0604732Z             },
2026-06-23T09:38:03.0604830Z             {
2026-06-23T09:38:03.0604979Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T09:38:03.0605079Z               "line": 148
2026-06-23T09:38:03.0605178Z             },
2026-06-23T09:38:03.0605278Z             {
2026-06-23T09:38:03.0605420Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T09:38:03.0605528Z               "line": 169
2026-06-23T09:38:03.0605638Z             },
2026-06-23T09:38:03.0605739Z             {
2026-06-23T09:38:03.0605880Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T09:38:03.0605992Z               "line": 181
2026-06-23T09:38:03.0606100Z             },
2026-06-23T09:38:03.0606200Z             {
2026-06-23T09:38:03.0606344Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-23T09:38:03.0606462Z               "line": 202
2026-06-23T09:38:03.0606564Z             },
2026-06-23T09:38:03.0606659Z             {
2026-06-23T09:38:03.0606796Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0606902Z               "line": 375
2026-06-23T09:38:03.0607006Z             },
2026-06-23T09:38:03.0607116Z             {
2026-06-23T09:38:03.0607251Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0607359Z               "line": 407
2026-06-23T09:38:03.0607459Z             },
2026-06-23T09:38:03.0607551Z             {
2026-06-23T09:38:03.0607688Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0607798Z               "line": 11590
2026-06-23T09:38:03.0607895Z             }
2026-06-23T09:38:03.0607988Z           ]
2026-06-23T09:38:03.0608087Z         }
2026-06-23T09:38:03.0608183Z       }
2026-06-23T09:38:03.0608287Z     },
2026-06-23T09:38:03.0608391Z     {
2026-06-23T09:38:03.0608505Z       "id": "REQ-MESH-5",
2026-06-23T09:38:03.0610017Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-23T09:38:03.0610132Z       "requiredStages": [
2026-06-23T09:38:03.0610240Z         "impl",
2026-06-23T09:38:03.0610350Z         "unit"
2026-06-23T09:38:03.0610443Z       ],
2026-06-23T09:38:03.0610546Z       "stages": {
2026-06-23T09:38:03.0610650Z         "doc": {
2026-06-23T09:38:03.0610765Z           "complete": false,
2026-06-23T09:38:03.0610872Z           "evidence": []
2026-06-23T09:38:03.0610976Z         },
2026-06-23T09:38:03.0611082Z         "impl": {
2026-06-23T09:38:03.0611197Z           "complete": true,
2026-06-23T09:38:03.0611305Z           "evidence": [
2026-06-23T09:38:03.0611406Z             {
2026-06-23T09:38:03.0611558Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0611663Z               "line": 61
2026-06-23T09:38:03.0611768Z             },
2026-06-23T09:38:03.0611873Z             {
2026-06-23T09:38:03.0612012Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0612126Z               "line": 109
2026-06-23T09:38:03.0612226Z             },
2026-06-23T09:38:03.0612326Z             {
2026-06-23T09:38:03.0612464Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0612680Z               "line": 104
2026-06-23T09:38:03.0612789Z             },
2026-06-23T09:38:03.0612888Z             {
2026-06-23T09:38:03.0613038Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.0613145Z               "line": 105
2026-06-23T09:38:03.0613256Z             },
2026-06-23T09:38:03.0613455Z             {
2026-06-23T09:38:03.0613612Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0613723Z               "line": 85
2026-06-23T09:38:03.0613822Z             },
2026-06-23T09:38:03.0613927Z             {
2026-06-23T09:38:03.0614066Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0614179Z               "line": 250
2026-06-23T09:38:03.0614281Z             },
2026-06-23T09:38:03.0614380Z             {
2026-06-23T09:38:03.0614533Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0614643Z               "line": 314
2026-06-23T09:38:03.0614753Z             },
2026-06-23T09:38:03.0614857Z             {
2026-06-23T09:38:03.0615010Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0615119Z               "line": 767
2026-06-23T09:38:03.0615220Z             },
2026-06-23T09:38:03.0615315Z             {
2026-06-23T09:38:03.0615452Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0615559Z               "line": 101
2026-06-23T09:38:03.0615653Z             },
2026-06-23T09:38:03.0615757Z             {
2026-06-23T09:38:03.0615895Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0615999Z               "line": 193
2026-06-23T09:38:03.0616103Z             }
2026-06-23T09:38:03.0616203Z           ]
2026-06-23T09:38:03.0616304Z         },
2026-06-23T09:38:03.0616408Z         "int": {
2026-06-23T09:38:03.0616518Z           "complete": false,
2026-06-23T09:38:03.0616623Z           "evidence": []
2026-06-23T09:38:03.0616722Z         },
2026-06-23T09:38:03.0616833Z         "unit": {
2026-06-23T09:38:03.0616942Z           "complete": true,
2026-06-23T09:38:03.0617061Z           "evidence": [
2026-06-23T09:38:03.0617157Z             {
2026-06-23T09:38:03.0617314Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0617428Z               "line": 1009
2026-06-23T09:38:03.0617529Z             },
2026-06-23T09:38:03.0617638Z             {
2026-06-23T09:38:03.0617772Z               "path": "crates/spt-store/src/roster.rs",
2026-06-23T09:38:03.0617881Z               "line": 462
2026-06-23T09:38:03.0617986Z             }
2026-06-23T09:38:03.0618097Z           ]
2026-06-23T09:38:03.0618196Z         }
2026-06-23T09:38:03.0618296Z       }
2026-06-23T09:38:03.0618402Z     },
2026-06-23T09:38:03.0618502Z     {
2026-06-23T09:38:03.0618620Z       "id": "REQ-MESH-6",
2026-06-23T09:38:03.0619947Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-23T09:38:03.0620072Z       "requiredStages": [
2026-06-23T09:38:03.0620172Z         "impl",
2026-06-23T09:38:03.0620281Z         "unit"
2026-06-23T09:38:03.0620387Z       ],
2026-06-23T09:38:03.0620481Z       "stages": {
2026-06-23T09:38:03.0620582Z         "doc": {
2026-06-23T09:38:03.0620697Z           "complete": false,
2026-06-23T09:38:03.0620810Z           "evidence": []
2026-06-23T09:38:03.0620915Z         },
2026-06-23T09:38:03.0621017Z         "impl": {
2026-06-23T09:38:03.0621134Z           "complete": true,
2026-06-23T09:38:03.0621238Z           "evidence": [
2026-06-23T09:38:03.0621344Z             {
2026-06-23T09:38:03.0621475Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0621584Z               "line": 4836
2026-06-23T09:38:03.0621842Z             }
2026-06-23T09:38:03.0621927Z           ]
2026-06-23T09:38:03.0622029Z         },
2026-06-23T09:38:03.0622132Z         "int": {
2026-06-23T09:38:03.0622252Z           "complete": false,
2026-06-23T09:38:03.0622372Z           "evidence": []
2026-06-23T09:38:03.0622466Z         },
2026-06-23T09:38:03.0622577Z         "unit": {
2026-06-23T09:38:03.0622786Z           "complete": true,
2026-06-23T09:38:03.0622901Z           "evidence": [
2026-06-23T09:38:03.0622996Z             {
2026-06-23T09:38:03.0623134Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0623240Z               "line": 12140
2026-06-23T09:38:03.0623334Z             },
2026-06-23T09:38:03.0623434Z             {
2026-06-23T09:38:03.0623555Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0623668Z               "line": 12167
2026-06-23T09:38:03.0623768Z             },
2026-06-23T09:38:03.0623865Z             {
2026-06-23T09:38:03.0623997Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0624105Z               "line": 12191
2026-06-23T09:38:03.0624215Z             }
2026-06-23T09:38:03.0624316Z           ]
2026-06-23T09:38:03.0624425Z         }
2026-06-23T09:38:03.0624526Z       }
2026-06-23T09:38:03.0624631Z     },
2026-06-23T09:38:03.0624730Z     {
2026-06-23T09:38:03.0624841Z       "id": "REQ-MIGRATE-1",
2026-06-23T09:38:03.0625035Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-23T09:38:03.0625141Z       "requiredStages": [],
2026-06-23T09:38:03.0625255Z       "stages": {
2026-06-23T09:38:03.0625359Z         "doc": {
2026-06-23T09:38:03.0625471Z           "complete": false,
2026-06-23T09:38:03.0625584Z           "evidence": []
2026-06-23T09:38:03.0625679Z         },
2026-06-23T09:38:03.0625790Z         "impl": {
2026-06-23T09:38:03.0625894Z           "complete": false,
2026-06-23T09:38:03.0626008Z           "evidence": []
2026-06-23T09:38:03.0626105Z         },
2026-06-23T09:38:03.0626205Z         "int": {
2026-06-23T09:38:03.0626322Z           "complete": false,
2026-06-23T09:38:03.0626427Z           "evidence": []
2026-06-23T09:38:03.0626536Z         },
2026-06-23T09:38:03.0626639Z         "unit": {
2026-06-23T09:38:03.0626754Z           "complete": false,
2026-06-23T09:38:03.0626855Z           "evidence": []
2026-06-23T09:38:03.0626953Z         }
2026-06-23T09:38:03.0627064Z       }
2026-06-23T09:38:03.0627154Z     },
2026-06-23T09:38:03.0627263Z     {
2026-06-23T09:38:03.0627374Z       "id": "REQ-MSG-1",
2026-06-23T09:38:03.0627846Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-23T09:38:03.0627960Z       "requiredStages": [
2026-06-23T09:38:03.0628070Z         "impl",
2026-06-23T09:38:03.0628180Z         "unit",
2026-06-23T09:38:03.0628279Z         "int"
2026-06-23T09:38:03.0628385Z       ],
2026-06-23T09:38:03.0628488Z       "stages": {
2026-06-23T09:38:03.0628584Z         "doc": {
2026-06-23T09:38:03.0628700Z           "complete": false,
2026-06-23T09:38:03.0628808Z           "evidence": []
2026-06-23T09:38:03.0628914Z         },
2026-06-23T09:38:03.0629090Z         "impl": {
2026-06-23T09:38:03.0629208Z           "complete": true,
2026-06-23T09:38:03.0629313Z           "evidence": [
2026-06-23T09:38:03.0629421Z             {
2026-06-23T09:38:03.0629567Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0629678Z               "line": 28
2026-06-23T09:38:03.0629778Z             },
2026-06-23T09:38:03.0629873Z             {
2026-06-23T09:38:03.0630012Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0630112Z               "line": 94
2026-06-23T09:38:03.0630216Z             },
2026-06-23T09:38:03.0630318Z             {
2026-06-23T09:38:03.0630450Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0630555Z               "line": 127
2026-06-23T09:38:03.0630647Z             },
2026-06-23T09:38:03.0630751Z             {
2026-06-23T09:38:03.0630985Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0631103Z               "line": 149
2026-06-23T09:38:03.0631200Z             },
2026-06-23T09:38:03.0631300Z             {
2026-06-23T09:38:03.0631437Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0631543Z               "line": 174
2026-06-23T09:38:03.0631737Z             },
2026-06-23T09:38:03.0631842Z             {
2026-06-23T09:38:03.0631988Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T09:38:03.0632101Z               "line": 18
2026-06-23T09:38:03.0632207Z             },
2026-06-23T09:38:03.0632312Z             {
2026-06-23T09:38:03.0632444Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:03.0632550Z               "line": 13
2026-06-23T09:38:03.0632650Z             },
2026-06-23T09:38:03.0632754Z             {
2026-06-23T09:38:03.0632888Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:03.0632993Z               "line": 62
2026-06-23T09:38:03.0633108Z             },
2026-06-23T09:38:03.0633194Z             {
2026-06-23T09:38:03.0633318Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0633427Z               "line": 13
2026-06-23T09:38:03.0633532Z             }
2026-06-23T09:38:03.0633642Z           ]
2026-06-23T09:38:03.0633742Z         },
2026-06-23T09:38:03.0633852Z         "int": {
2026-06-23T09:38:03.0633961Z           "complete": true,
2026-06-23T09:38:03.0634072Z           "evidence": [
2026-06-23T09:38:03.0634176Z             {
2026-06-23T09:38:03.0634343Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T09:38:03.0634454Z               "line": 9
2026-06-23T09:38:03.0634547Z             },
2026-06-23T09:38:03.0634651Z             {
2026-06-23T09:38:03.0634810Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T09:38:03.0634924Z               "line": 56
2026-06-23T09:38:03.0635028Z             },
2026-06-23T09:38:03.0635129Z             {
2026-06-23T09:38:03.0635285Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T09:38:03.0635392Z               "line": 113
2026-06-23T09:38:03.0635496Z             }
2026-06-23T09:38:03.0635596Z           ]
2026-06-23T09:38:03.0635701Z         },
2026-06-23T09:38:03.0635806Z         "unit": {
2026-06-23T09:38:03.0635920Z           "complete": true,
2026-06-23T09:38:03.0636031Z           "evidence": [
2026-06-23T09:38:03.0636130Z             {
2026-06-23T09:38:03.0636272Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0636383Z               "line": 203
2026-06-23T09:38:03.0636492Z             },
2026-06-23T09:38:03.0636592Z             {
2026-06-23T09:38:03.0636731Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0636844Z               "line": 232
2026-06-23T09:38:03.0636948Z             },
2026-06-23T09:38:03.0637058Z             {
2026-06-23T09:38:03.0637189Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0637304Z               "line": 277
2026-06-23T09:38:03.0637405Z             },
2026-06-23T09:38:03.0637513Z             {
2026-06-23T09:38:03.0637657Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0637762Z               "line": 300
2026-06-23T09:38:03.0637871Z             },
2026-06-23T09:38:03.0637968Z             {
2026-06-23T09:38:03.0638105Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-23T09:38:03.0638205Z               "line": 325
2026-06-23T09:38:03.0638311Z             },
2026-06-23T09:38:03.0640864Z             {
2026-06-23T09:38:03.0641048Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T09:38:03.0641173Z               "line": 204
2026-06-23T09:38:03.0641272Z             },
2026-06-23T09:38:03.0641377Z             {
2026-06-23T09:38:03.0641526Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T09:38:03.0641640Z               "line": 237
2026-06-23T09:38:03.0641750Z             },
2026-06-23T09:38:03.0641993Z             {
2026-06-23T09:38:03.0642142Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T09:38:03.0642249Z               "line": 251
2026-06-23T09:38:03.0642353Z             },
2026-06-23T09:38:03.0642454Z             {
2026-06-23T09:38:03.0642595Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T09:38:03.0642699Z               "line": 263
2026-06-23T09:38:03.0642900Z             },
2026-06-23T09:38:03.0643004Z             {
2026-06-23T09:38:03.0643139Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:03.0643243Z               "line": 162
2026-06-23T09:38:03.0643348Z             },
2026-06-23T09:38:03.0643453Z             {
2026-06-23T09:38:03.0643586Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-23T09:38:03.0643692Z               "line": 242
2026-06-23T09:38:03.0643797Z             },
2026-06-23T09:38:03.0643896Z             {
2026-06-23T09:38:03.0644026Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0644144Z               "line": 134
2026-06-23T09:38:03.0644240Z             },
2026-06-23T09:38:03.0644346Z             {
2026-06-23T09:38:03.0644473Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0644579Z               "line": 153
2026-06-23T09:38:03.0644675Z             }
2026-06-23T09:38:03.0644778Z           ]
2026-06-23T09:38:03.0644879Z         }
2026-06-23T09:38:03.0644980Z       }
2026-06-23T09:38:03.0645084Z     },
2026-06-23T09:38:03.0645188Z     {
2026-06-23T09:38:03.0645297Z       "id": "REQ-MSG-2",
2026-06-23T09:38:03.0645603Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-23T09:38:03.0645722Z       "requiredStages": [
2026-06-23T09:38:03.0645827Z         "impl",
2026-06-23T09:38:03.0645927Z         "unit"
2026-06-23T09:38:03.0646032Z       ],
2026-06-23T09:38:03.0646141Z       "stages": {
2026-06-23T09:38:03.0646246Z         "doc": {
2026-06-23T09:38:03.0646352Z           "complete": false,
2026-06-23T09:38:03.0646470Z           "evidence": []
2026-06-23T09:38:03.0646581Z         },
2026-06-23T09:38:03.0646685Z         "impl": {
2026-06-23T09:38:03.0646804Z           "complete": true,
2026-06-23T09:38:03.0646911Z           "evidence": [
2026-06-23T09:38:03.0647014Z             {
2026-06-23T09:38:03.0647143Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0647254Z               "line": 11
2026-06-23T09:38:03.0647352Z             },
2026-06-23T09:38:03.0647456Z             {
2026-06-23T09:38:03.0647585Z               "path": "crates/spt/src/main.rs",
2026-06-23T09:38:03.0647688Z               "line": 8
2026-06-23T09:38:03.0647787Z             }
2026-06-23T09:38:03.0647888Z           ]
2026-06-23T09:38:03.0647994Z         },
2026-06-23T09:38:03.0648097Z         "int": {
2026-06-23T09:38:03.0648213Z           "complete": false,
2026-06-23T09:38:03.0648327Z           "evidence": []
2026-06-23T09:38:03.0648426Z         },
2026-06-23T09:38:03.0648532Z         "unit": {
2026-06-23T09:38:03.0648642Z           "complete": true,
2026-06-23T09:38:03.0648750Z           "evidence": [
2026-06-23T09:38:03.0648861Z             {
2026-06-23T09:38:03.0649065Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0649176Z               "line": 9094
2026-06-23T09:38:03.0649280Z             },
2026-06-23T09:38:03.0649385Z             {
2026-06-23T09:38:03.0649515Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0649623Z               "line": 9136
2026-06-23T09:38:03.0649724Z             },
2026-06-23T09:38:03.0649816Z             {
2026-06-23T09:38:03.0649943Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0650044Z               "line": 9185
2026-06-23T09:38:03.0650135Z             },
2026-06-23T09:38:03.0650229Z             {
2026-06-23T09:38:03.0650357Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0650466Z               "line": 9208
2026-06-23T09:38:03.0650565Z             },
2026-06-23T09:38:03.0650669Z             {
2026-06-23T09:38:03.0650988Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0651104Z               "line": 11345
2026-06-23T09:38:03.0651209Z             },
2026-06-23T09:38:03.0651313Z             {
2026-06-23T09:38:03.0651433Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0651533Z               "line": 11354
2026-06-23T09:38:03.0651642Z             },
2026-06-23T09:38:03.0651832Z             {
2026-06-23T09:38:03.0651967Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0652072Z               "line": 11368
2026-06-23T09:38:03.0652175Z             }
2026-06-23T09:38:03.0652276Z           ]
2026-06-23T09:38:03.0652377Z         }
2026-06-23T09:38:03.0652481Z       }
2026-06-23T09:38:03.0652572Z     },
2026-06-23T09:38:03.0652668Z     {
2026-06-23T09:38:03.0652777Z       "id": "REQ-MSG-3",
2026-06-23T09:38:03.0653202Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-23T09:38:03.0653308Z       "requiredStages": [
2026-06-23T09:38:03.0653414Z         "impl",
2026-06-23T09:38:03.0653522Z         "unit",
2026-06-23T09:38:03.0653623Z         "int"
2026-06-23T09:38:03.0653723Z       ],
2026-06-23T09:38:03.0653822Z       "stages": {
2026-06-23T09:38:03.0653923Z         "doc": {
2026-06-23T09:38:03.0654037Z           "complete": false,
2026-06-23T09:38:03.0654141Z           "evidence": []
2026-06-23T09:38:03.0654238Z         },
2026-06-23T09:38:03.0654333Z         "impl": {
2026-06-23T09:38:03.0654447Z           "complete": true,
2026-06-23T09:38:03.0654552Z           "evidence": [
2026-06-23T09:38:03.0654648Z             {
2026-06-23T09:38:03.0654795Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-23T09:38:03.0654901Z               "line": 19
2026-06-23T09:38:03.0655010Z             },
2026-06-23T09:38:03.0655110Z             {
2026-06-23T09:38:03.0655245Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0655348Z               "line": 21
2026-06-23T09:38:03.0655458Z             },
2026-06-23T09:38:03.0655560Z             {
2026-06-23T09:38:03.0655691Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0655800Z               "line": 48
2026-06-23T09:38:03.0655901Z             },
2026-06-23T09:38:03.0655996Z             {
2026-06-23T09:38:03.0656124Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0656240Z               "line": 174
2026-06-23T09:38:03.0656344Z             }
2026-06-23T09:38:03.0656439Z           ]
2026-06-23T09:38:03.0656545Z         },
2026-06-23T09:38:03.0656645Z         "int": {
2026-06-23T09:38:03.0656763Z           "complete": true,
2026-06-23T09:38:03.0656869Z           "evidence": [
2026-06-23T09:38:03.0656978Z             {
2026-06-23T09:38:03.0657146Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T09:38:03.0657255Z               "line": 10
2026-06-23T09:38:03.0657360Z             },
2026-06-23T09:38:03.0657456Z             {
2026-06-23T09:38:03.0657612Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-23T09:38:03.0657712Z               "line": 56
2026-06-23T09:38:03.0657805Z             }
2026-06-23T09:38:03.0657912Z           ]
2026-06-23T09:38:03.0658012Z         },
2026-06-23T09:38:03.0658122Z         "unit": {
2026-06-23T09:38:03.0658225Z           "complete": true,
2026-06-23T09:38:03.0658343Z           "evidence": [
2026-06-23T09:38:03.0658444Z             {
2026-06-23T09:38:03.0658577Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0658691Z               "line": 228
2026-06-23T09:38:03.0658782Z             },
2026-06-23T09:38:03.0658882Z             {
2026-06-23T09:38:03.0659097Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0659202Z               "line": 247
2026-06-23T09:38:03.0659306Z             },
2026-06-23T09:38:03.0659412Z             {
2026-06-23T09:38:03.0659540Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.0659770Z               "line": 270
2026-06-23T09:38:03.0659869Z             }
2026-06-23T09:38:03.0659969Z           ]
2026-06-23T09:38:03.0660075Z         }
2026-06-23T09:38:03.0660174Z       }
2026-06-23T09:38:03.0660279Z     },
2026-06-23T09:38:03.0660380Z     {
2026-06-23T09:38:03.0660494Z       "id": "REQ-MSG-4",
2026-06-23T09:38:03.0661383Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-23T09:38:03.0661601Z       "requiredStages": [
2026-06-23T09:38:03.0661707Z         "impl",
2026-06-23T09:38:03.0661811Z         "unit",
2026-06-23T09:38:03.0661911Z         "int"
2026-06-23T09:38:03.0662012Z       ],
2026-06-23T09:38:03.0662112Z       "stages": {
2026-06-23T09:38:03.0662217Z         "doc": {
2026-06-23T09:38:03.0662327Z           "complete": false,
2026-06-23T09:38:03.0662441Z           "evidence": []
2026-06-23T09:38:03.0662536Z         },
2026-06-23T09:38:03.0662637Z         "impl": {
2026-06-23T09:38:03.0662755Z           "complete": true,
2026-06-23T09:38:03.0662865Z           "evidence": [
2026-06-23T09:38:03.0662961Z             {
2026-06-23T09:38:03.0663089Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0663200Z               "line": 19
2026-06-23T09:38:03.0663305Z             },
2026-06-23T09:38:03.0663393Z             {
2026-06-23T09:38:03.0663527Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0663636Z               "line": 46
2026-06-23T09:38:03.0663744Z             },
2026-06-23T09:38:03.0663844Z             {
2026-06-23T09:38:03.0663988Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0664096Z               "line": 532
2026-06-23T09:38:03.0664197Z             },
2026-06-23T09:38:03.0664307Z             {
2026-06-23T09:38:03.0664430Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0664541Z               "line": 3760
2026-06-23T09:38:03.0664641Z             }
2026-06-23T09:38:03.0664749Z           ]
2026-06-23T09:38:03.0664856Z         },
2026-06-23T09:38:03.0664959Z         "int": {
2026-06-23T09:38:03.0665069Z           "complete": true,
2026-06-23T09:38:03.0665180Z           "evidence": [
2026-06-23T09:38:03.0665284Z             {
2026-06-23T09:38:03.0665427Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-23T09:38:03.0665533Z               "line": 98
2026-06-23T09:38:03.0665632Z             },
2026-06-23T09:38:03.0665732Z             {
2026-06-23T09:38:03.0665881Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-23T09:38:03.0665989Z               "line": 128
2026-06-23T09:38:03.0666087Z             }
2026-06-23T09:38:03.0666191Z           ]
2026-06-23T09:38:03.0666294Z         },
2026-06-23T09:38:03.0666404Z         "unit": {
2026-06-23T09:38:03.0666509Z           "complete": true,
2026-06-23T09:38:03.0666618Z           "evidence": [
2026-06-23T09:38:03.0666718Z             {
2026-06-23T09:38:03.0666857Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0666966Z               "line": 68
2026-06-23T09:38:03.0667072Z             },
2026-06-23T09:38:03.0667176Z             {
2026-06-23T09:38:03.0667304Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0667406Z               "line": 79
2026-06-23T09:38:03.0667510Z             },
2026-06-23T09:38:03.0667614Z             {
2026-06-23T09:38:03.0667745Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0667853Z               "line": 90
2026-06-23T09:38:03.0667958Z             },
2026-06-23T09:38:03.0668059Z             {
2026-06-23T09:38:03.0668191Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0668296Z               "line": 151
2026-06-23T09:38:03.0668407Z             }
2026-06-23T09:38:03.0668506Z           ]
2026-06-23T09:38:03.0668605Z         }
2026-06-23T09:38:03.0668715Z       }
2026-06-23T09:38:03.0668894Z     },
2026-06-23T09:38:03.0669071Z     {
2026-06-23T09:38:03.0669185Z       "id": "REQ-MSG-5",
2026-06-23T09:38:03.0669949Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-23T09:38:03.0670162Z       "requiredStages": [
2026-06-23T09:38:03.0670268Z         "doc",
2026-06-23T09:38:03.0670372Z         "impl",
2026-06-23T09:38:03.0670467Z         "unit"
2026-06-23T09:38:03.0670559Z       ],
2026-06-23T09:38:03.0670668Z       "stages": {
2026-06-23T09:38:03.0670768Z         "doc": {
2026-06-23T09:38:03.0670883Z           "complete": true,
2026-06-23T09:38:03.0670992Z           "evidence": [
2026-06-23T09:38:03.0671097Z             {
2026-06-23T09:38:03.0671212Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0671312Z               "line": 240
2026-06-23T09:38:03.0671416Z             }
2026-06-23T09:38:03.0671515Z           ]
2026-06-23T09:38:03.0671620Z         },
2026-06-23T09:38:03.0671723Z         "impl": {
2026-06-23T09:38:03.0671828Z           "complete": true,
2026-06-23T09:38:03.0671924Z           "evidence": [
2026-06-23T09:38:03.0672028Z             {
2026-06-23T09:38:03.0672166Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T09:38:03.0672267Z               "line": 60
2026-06-23T09:38:03.0672376Z             },
2026-06-23T09:38:03.0672472Z             {
2026-06-23T09:38:03.0672606Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.0672715Z               "line": 126
2026-06-23T09:38:03.0672815Z             },
2026-06-23T09:38:03.0672920Z             {
2026-06-23T09:38:03.0673057Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.0673169Z               "line": 135
2026-06-23T09:38:03.0673268Z             },
2026-06-23T09:38:03.0673368Z             {
2026-06-23T09:38:03.0673498Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.0673606Z               "line": 149
2026-06-23T09:38:03.0673706Z             },
2026-06-23T09:38:03.0673803Z             {
2026-06-23T09:38:03.0673935Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.0674044Z               "line": 178
2026-06-23T09:38:03.0674144Z             },
2026-06-23T09:38:03.0674252Z             {
2026-06-23T09:38:03.0674380Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0674491Z               "line": 3452
2026-06-23T09:38:03.0674590Z             }
2026-06-23T09:38:03.0674690Z           ]
2026-06-23T09:38:03.0674796Z         },
2026-06-23T09:38:03.0674901Z         "int": {
2026-06-23T09:38:03.0675005Z           "complete": true,
2026-06-23T09:38:03.0675111Z           "evidence": [
2026-06-23T09:38:03.0675210Z             {
2026-06-23T09:38:03.0675343Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-23T09:38:03.0675454Z               "line": 19
2026-06-23T09:38:03.0675559Z             }
2026-06-23T09:38:03.0675663Z           ]
2026-06-23T09:38:03.0675755Z         },
2026-06-23T09:38:03.0675864Z         "unit": {
2026-06-23T09:38:03.0675978Z           "complete": true,
2026-06-23T09:38:03.0676088Z           "evidence": [
2026-06-23T09:38:03.0676192Z             {
2026-06-23T09:38:03.0676327Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T09:38:03.0676441Z               "line": 192
2026-06-23T09:38:03.0676531Z             },
2026-06-23T09:38:03.0676627Z             {
2026-06-23T09:38:03.0676765Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-23T09:38:03.0676873Z               "line": 154
2026-06-23T09:38:03.0676968Z             },
2026-06-23T09:38:03.0677055Z             {
2026-06-23T09:38:03.0677187Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0677298Z               "line": 122
2026-06-23T09:38:03.0677412Z             },
2026-06-23T09:38:03.0677511Z             {
2026-06-23T09:38:03.0677746Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.0677850Z               "line": 452
2026-06-23T09:38:03.0677951Z             },
2026-06-23T09:38:03.0678051Z             {
2026-06-23T09:38:03.0678179Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.0678290Z               "line": 501
2026-06-23T09:38:03.0678394Z             },
2026-06-23T09:38:03.0678567Z             {
2026-06-23T09:38:03.0678704Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.0678809Z               "line": 517
2026-06-23T09:38:03.0678915Z             },
2026-06-23T09:38:03.0679099Z             {
2026-06-23T09:38:03.0679237Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.0679345Z               "line": 536
2026-06-23T09:38:03.0679445Z             },
2026-06-23T09:38:03.0679540Z             {
2026-06-23T09:38:03.0679669Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0679783Z               "line": 9037
2026-06-23T09:38:03.0679888Z             }
2026-06-23T09:38:03.0679989Z           ]
2026-06-23T09:38:03.0680093Z         }
2026-06-23T09:38:03.0680199Z       }
2026-06-23T09:38:03.0680294Z     },
2026-06-23T09:38:03.0680398Z     {
2026-06-23T09:38:03.0680499Z       "id": "REQ-MSG-6",
2026-06-23T09:38:03.0682128Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-23T09:38:03.0682254Z       "requiredStages": [
2026-06-23T09:38:03.0682359Z         "doc",
2026-06-23T09:38:03.0682465Z         "impl",
2026-06-23T09:38:03.0682574Z         "unit"
2026-06-23T09:38:03.0682673Z       ],
2026-06-23T09:38:03.0682780Z       "stages": {
2026-06-23T09:38:03.0682875Z         "doc": {
2026-06-23T09:38:03.0682983Z           "complete": true,
2026-06-23T09:38:03.0683090Z           "evidence": [
2026-06-23T09:38:03.0683194Z             {
2026-06-23T09:38:03.0683312Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0683419Z               "line": 243
2026-06-23T09:38:03.0683523Z             }
2026-06-23T09:38:03.0683627Z           ]
2026-06-23T09:38:03.0683729Z         },
2026-06-23T09:38:03.0683828Z         "impl": {
2026-06-23T09:38:03.0683942Z           "complete": true,
2026-06-23T09:38:03.0684053Z           "evidence": [
2026-06-23T09:38:03.0684152Z             {
2026-06-23T09:38:03.0684306Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0684410Z               "line": 177
2026-06-23T09:38:03.0684505Z             },
2026-06-23T09:38:03.0684613Z             {
2026-06-23T09:38:03.0684761Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0684878Z               "line": 428
2026-06-23T09:38:03.0684979Z             },
2026-06-23T09:38:03.0685075Z             {
2026-06-23T09:38:03.0685226Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0685332Z               "line": 451
2026-06-23T09:38:03.0685437Z             },
2026-06-23T09:38:03.0685540Z             {
2026-06-23T09:38:03.0685685Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T09:38:03.0685789Z               "line": 89
2026-06-23T09:38:03.0685889Z             },
2026-06-23T09:38:03.0685990Z             {
2026-06-23T09:38:03.0686137Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0686252Z               "line": 155
2026-06-23T09:38:03.0686352Z             }
2026-06-23T09:38:03.0686452Z           ]
2026-06-23T09:38:03.0686552Z         },
2026-06-23T09:38:03.0686653Z         "int": {
2026-06-23T09:38:03.0686767Z           "complete": false,
2026-06-23T09:38:03.0686987Z           "evidence": []
2026-06-23T09:38:03.0687096Z         },
2026-06-23T09:38:03.0687197Z         "unit": {
2026-06-23T09:38:03.0687306Z           "complete": true,
2026-06-23T09:38:03.0687414Z           "evidence": [
2026-06-23T09:38:03.0687514Z             {
2026-06-23T09:38:03.0687668Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0687877Z               "line": 1746
2026-06-23T09:38:03.0687987Z             },
2026-06-23T09:38:03.0688086Z             {
2026-06-23T09:38:03.0688230Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T09:38:03.0688340Z               "line": 219
2026-06-23T09:38:03.0688439Z             }
2026-06-23T09:38:03.0688545Z           ]
2026-06-23T09:38:03.0688644Z         }
2026-06-23T09:38:03.0688754Z       }
2026-06-23T09:38:03.0688850Z     },
2026-06-23T09:38:03.0689030Z     {
2026-06-23T09:38:03.0689151Z       "id": "REQ-MSG-ENVELOPE",
2026-06-23T09:38:03.0692867Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-23T09:38:03.0693034Z       "requiredStages": [
2026-06-23T09:38:03.0693139Z         "doc",
2026-06-23T09:38:03.0693248Z         "impl",
2026-06-23T09:38:03.0693349Z         "unit",
2026-06-23T09:38:03.0693463Z         "int"
2026-06-23T09:38:03.0693562Z       ],
2026-06-23T09:38:03.0693664Z       "stages": {
2026-06-23T09:38:03.0693759Z         "doc": {
2026-06-23T09:38:03.0693877Z           "complete": true,
2026-06-23T09:38:03.0693989Z           "evidence": [
2026-06-23T09:38:03.0694088Z             {
2026-06-23T09:38:03.0694341Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-23T09:38:03.0694455Z               "line": 47
2026-06-23T09:38:03.0694561Z             }
2026-06-23T09:38:03.0694670Z           ]
2026-06-23T09:38:03.0694769Z         },
2026-06-23T09:38:03.0694871Z         "impl": {
2026-06-23T09:38:03.0694990Z           "complete": true,
2026-06-23T09:38:03.0695098Z           "evidence": [
2026-06-23T09:38:03.0695193Z             {
2026-06-23T09:38:03.0695330Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0695448Z               "line": 20
2026-06-23T09:38:03.0695553Z             },
2026-06-23T09:38:03.0695654Z             {
2026-06-23T09:38:03.0695781Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0695897Z               "line": 33
2026-06-23T09:38:03.0695997Z             },
2026-06-23T09:38:03.0696101Z             {
2026-06-23T09:38:03.0696231Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0696340Z               "line": 47
2026-06-23T09:38:03.0696434Z             },
2026-06-23T09:38:03.0696536Z             {
2026-06-23T09:38:03.0696669Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0696778Z               "line": 58
2026-06-23T09:38:03.0696884Z             },
2026-06-23T09:38:03.0697098Z             {
2026-06-23T09:38:03.0697222Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0697327Z               "line": 14
2026-06-23T09:38:03.0697428Z             },
2026-06-23T09:38:03.0697533Z             {
2026-06-23T09:38:03.0697675Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0697805Z               "line": 27
2026-06-23T09:38:03.0697993Z             },
2026-06-23T09:38:03.0698088Z             {
2026-06-23T09:38:03.0698214Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0698322Z               "line": 40
2026-06-23T09:38:03.0698428Z             },
2026-06-23T09:38:03.0698528Z             {
2026-06-23T09:38:03.0698665Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:03.0698771Z               "line": 92
2026-06-23T09:38:03.0698876Z             },
2026-06-23T09:38:03.0699047Z             {
2026-06-23T09:38:03.0699190Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.0699304Z               "line": 143
2026-06-23T09:38:03.0699405Z             },
2026-06-23T09:38:03.0699514Z             {
2026-06-23T09:38:03.0699658Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.0699759Z               "line": 216
2026-06-23T09:38:03.0699866Z             },
2026-06-23T09:38:03.0699963Z             {
2026-06-23T09:38:03.0700102Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0700209Z               "line": 533
2026-06-23T09:38:03.0700319Z             },
2026-06-23T09:38:03.0700424Z             {
2026-06-23T09:38:03.0700560Z               "path": "crates/spt/src/api/worker.rs",
2026-06-23T09:38:03.0700665Z               "line": 78
2026-06-23T09:38:03.0700766Z             },
2026-06-23T09:38:03.0700869Z             {
2026-06-23T09:38:03.0700994Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0701109Z               "line": 3761
2026-06-23T09:38:03.0701213Z             }
2026-06-23T09:38:03.0701314Z           ]
2026-06-23T09:38:03.0701423Z         },
2026-06-23T09:38:03.0701527Z         "int": {
2026-06-23T09:38:03.0701643Z           "complete": true,
2026-06-23T09:38:03.0701747Z           "evidence": [
2026-06-23T09:38:03.0701852Z             {
2026-06-23T09:38:03.0702006Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-23T09:38:03.0702110Z               "line": 15
2026-06-23T09:38:03.0702219Z             }
2026-06-23T09:38:03.0702311Z           ]
2026-06-23T09:38:03.0702414Z         },
2026-06-23T09:38:03.0702515Z         "unit": {
2026-06-23T09:38:03.0702621Z           "complete": true,
2026-06-23T09:38:03.0702724Z           "evidence": [
2026-06-23T09:38:03.0702825Z             {
2026-06-23T09:38:03.0702960Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0703063Z               "line": 102
2026-06-23T09:38:03.0703162Z             },
2026-06-23T09:38:03.0703258Z             {
2026-06-23T09:38:03.0703394Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-23T09:38:03.0703503Z               "line": 137
2026-06-23T09:38:03.0703609Z             },
2026-06-23T09:38:03.0703713Z             {
2026-06-23T09:38:03.0703842Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0703952Z               "line": 98
2026-06-23T09:38:03.0704051Z             },
2026-06-23T09:38:03.0704147Z             {
2026-06-23T09:38:03.0704281Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0704385Z               "line": 106
2026-06-23T09:38:03.0704486Z             },
2026-06-23T09:38:03.0704581Z             {
2026-06-23T09:38:03.0704714Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0704825Z               "line": 113
2026-06-23T09:38:03.0704924Z             },
2026-06-23T09:38:03.0705034Z             {
2026-06-23T09:38:03.0705159Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-23T09:38:03.0705267Z               "line": 122
2026-06-23T09:38:03.0705368Z             }
2026-06-23T09:38:03.0705474Z           ]
2026-06-23T09:38:03.0705686Z         }
2026-06-23T09:38:03.0705786Z       }
2026-06-23T09:38:03.0705890Z     },
2026-06-23T09:38:03.0705989Z     {
2026-06-23T09:38:03.0706133Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-23T09:38:03.0711177Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-23T09:38:03.0711453Z       "requiredStages": [
2026-06-23T09:38:03.0711559Z         "doc",
2026-06-23T09:38:03.0711674Z         "impl",
2026-06-23T09:38:03.0711778Z         "unit",
2026-06-23T09:38:03.0711884Z         "int"
2026-06-23T09:38:03.0711988Z       ],
2026-06-23T09:38:03.0712092Z       "stages": {
2026-06-23T09:38:03.0712189Z         "doc": {
2026-06-23T09:38:03.0712303Z           "complete": true,
2026-06-23T09:38:03.0712421Z           "evidence": [
2026-06-23T09:38:03.0712513Z             {
2026-06-23T09:38:03.0712689Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-23T09:38:03.0712794Z               "line": 277
2026-06-23T09:38:03.0712895Z             },
2026-06-23T09:38:03.0712994Z             {
2026-06-23T09:38:03.0713114Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.0713224Z               "line": 214
2026-06-23T09:38:03.0713313Z             }
2026-06-23T09:38:03.0713424Z           ]
2026-06-23T09:38:03.0713530Z         },
2026-06-23T09:38:03.0713627Z         "impl": {
2026-06-23T09:38:03.0713746Z           "complete": true,
2026-06-23T09:38:03.0713856Z           "evidence": [
2026-06-23T09:38:03.0713963Z             {
2026-06-23T09:38:03.0714107Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0714212Z               "line": 1043
2026-06-23T09:38:03.0714321Z             },
2026-06-23T09:38:03.0714422Z             {
2026-06-23T09:38:03.0714561Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0714669Z               "line": 1097
2026-06-23T09:38:03.0714775Z             },
2026-06-23T09:38:03.0714875Z             {
2026-06-23T09:38:03.0715027Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0715137Z               "line": 23
2026-06-23T09:38:03.0715237Z             },
2026-06-23T09:38:03.0715341Z             {
2026-06-23T09:38:03.0715489Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0715599Z               "line": 91
2026-06-23T09:38:03.0715705Z             },
2026-06-23T09:38:03.0715809Z             {
2026-06-23T09:38:03.0715957Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0716156Z               "line": 239
2026-06-23T09:38:03.0716256Z             },
2026-06-23T09:38:03.0716356Z             {
2026-06-23T09:38:03.0716511Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0716625Z               "line": 287
2026-06-23T09:38:03.0716731Z             },
2026-06-23T09:38:03.0716911Z             {
2026-06-23T09:38:03.0717055Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0717164Z               "line": 311
2026-06-23T09:38:03.0717264Z             },
2026-06-23T09:38:03.0717370Z             {
2026-06-23T09:38:03.0717517Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0717628Z               "line": 60
2026-06-23T09:38:03.0717736Z             },
2026-06-23T09:38:03.0717831Z             {
2026-06-23T09:38:03.0717981Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0718085Z               "line": 936
2026-06-23T09:38:03.0718194Z             }
2026-06-23T09:38:03.0718301Z           ]
2026-06-23T09:38:03.0718394Z         },
2026-06-23T09:38:03.0718505Z         "int": {
2026-06-23T09:38:03.0718616Z           "complete": true,
2026-06-23T09:38:03.0718728Z           "evidence": [
2026-06-23T09:38:03.0718829Z             {
2026-06-23T09:38:03.0719104Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:03.0719218Z               "line": 1214
2026-06-23T09:38:03.0719320Z             },
2026-06-23T09:38:03.0719423Z             {
2026-06-23T09:38:03.0719581Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:03.0719696Z               "line": 1319
2026-06-23T09:38:03.0719795Z             },
2026-06-23T09:38:03.0719896Z             {
2026-06-23T09:38:03.0720072Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:03.0720182Z               "line": 1387
2026-06-23T09:38:03.0720282Z             },
2026-06-23T09:38:03.0720377Z             {
2026-06-23T09:38:03.0720550Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:03.0720658Z               "line": 1480
2026-06-23T09:38:03.0720758Z             }
2026-06-23T09:38:03.0720864Z           ]
2026-06-23T09:38:03.0720963Z         },
2026-06-23T09:38:03.0721068Z         "unit": {
2026-06-23T09:38:03.0721179Z           "complete": true,
2026-06-23T09:38:03.0721297Z           "evidence": [
2026-06-23T09:38:03.0721397Z             {
2026-06-23T09:38:03.0721544Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.0721656Z               "line": 276
2026-06-23T09:38:03.0721756Z             },
2026-06-23T09:38:03.0721863Z             {
2026-06-23T09:38:03.0722009Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0722120Z               "line": 350
2026-06-23T09:38:03.0722224Z             },
2026-06-23T09:38:03.0722323Z             {
2026-06-23T09:38:03.0722473Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0722586Z               "line": 381
2026-06-23T09:38:03.0722686Z             },
2026-06-23T09:38:03.0722782Z             {
2026-06-23T09:38:03.0722935Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0723034Z               "line": 411
2026-06-23T09:38:03.0723135Z             },
2026-06-23T09:38:03.0723244Z             {
2026-06-23T09:38:03.0723384Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-23T09:38:03.0723497Z               "line": 440
2026-06-23T09:38:03.0723597Z             },
2026-06-23T09:38:03.0723699Z             {
2026-06-23T09:38:03.0723854Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0723965Z               "line": 1228
2026-06-23T09:38:03.0724070Z             }
2026-06-23T09:38:03.0724174Z           ]
2026-06-23T09:38:03.0724273Z         }
2026-06-23T09:38:03.0724368Z       }
2026-06-23T09:38:03.0724458Z     },
2026-06-23T09:38:03.0724667Z     {
2026-06-23T09:38:03.0724777Z       "id": "REQ-NET-1",
2026-06-23T09:38:03.0724991Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-23T09:38:03.0725106Z       "requiredStages": [
2026-06-23T09:38:03.0725219Z         "impl",
2026-06-23T09:38:03.0725321Z         "unit",
2026-06-23T09:38:03.0725415Z         "int"
2026-06-23T09:38:03.0725631Z       ],
2026-06-23T09:38:03.0725730Z       "stages": {
2026-06-23T09:38:03.0725834Z         "doc": {
2026-06-23T09:38:03.0725946Z           "complete": false,
2026-06-23T09:38:03.0726064Z           "evidence": []
2026-06-23T09:38:03.0726163Z         },
2026-06-23T09:38:03.0726274Z         "impl": {
2026-06-23T09:38:03.0726393Z           "complete": true,
2026-06-23T09:38:03.0726498Z           "evidence": [
2026-06-23T09:38:03.0726594Z             {
2026-06-23T09:38:03.0726745Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0726853Z               "line": 54
2026-06-23T09:38:03.0726959Z             },
2026-06-23T09:38:03.0727066Z             {
2026-06-23T09:38:03.0727215Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0729769Z               "line": 594
2026-06-23T09:38:03.0729903Z             },
2026-06-23T09:38:03.0730003Z             {
2026-06-23T09:38:03.0730151Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-23T09:38:03.0730260Z               "line": 130
2026-06-23T09:38:03.0730369Z             },
2026-06-23T09:38:03.0730466Z             {
2026-06-23T09:38:03.0730622Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0730732Z               "line": 97
2026-06-23T09:38:03.0730833Z             },
2026-06-23T09:38:03.0730937Z             {
2026-06-23T09:38:03.0731086Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0731200Z               "line": 159
2026-06-23T09:38:03.0731309Z             },
2026-06-23T09:38:03.0731411Z             {
2026-06-23T09:38:03.0731557Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0731667Z               "line": 175
2026-06-23T09:38:03.0731772Z             },
2026-06-23T09:38:03.0731876Z             {
2026-06-23T09:38:03.0732014Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0732123Z               "line": 190
2026-06-23T09:38:03.0732212Z             },
2026-06-23T09:38:03.0732312Z             {
2026-06-23T09:38:03.0732446Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0732550Z               "line": 271
2026-06-23T09:38:03.0732650Z             },
2026-06-23T09:38:03.0732756Z             {
2026-06-23T09:38:03.0732893Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0733004Z               "line": 306
2026-06-23T09:38:03.0733104Z             },
2026-06-23T09:38:03.0733208Z             {
2026-06-23T09:38:03.0733352Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0733466Z               "line": 312
2026-06-23T09:38:03.0733571Z             },
2026-06-23T09:38:03.0733662Z             {
2026-06-23T09:38:03.0733809Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0733915Z               "line": 318
2026-06-23T09:38:03.0734020Z             },
2026-06-23T09:38:03.0734119Z             {
2026-06-23T09:38:03.0734259Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0734367Z               "line": 334
2026-06-23T09:38:03.0734472Z             },
2026-06-23T09:38:03.0734568Z             {
2026-06-23T09:38:03.0734710Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0734814Z               "line": 354
2026-06-23T09:38:03.0734915Z             },
2026-06-23T09:38:03.0735018Z             {
2026-06-23T09:38:03.0735155Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T09:38:03.0735270Z               "line": 35
2026-06-23T09:38:03.0735375Z             },
2026-06-23T09:38:03.0735474Z             {
2026-06-23T09:38:03.0735746Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T09:38:03.0735862Z               "line": 85
2026-06-23T09:38:03.0735966Z             },
2026-06-23T09:38:03.0736052Z             {
2026-06-23T09:38:03.0736196Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:03.0736300Z               "line": 138
2026-06-23T09:38:03.0736496Z             },
2026-06-23T09:38:03.0736601Z             {
2026-06-23T09:38:03.0736738Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0736849Z               "line": 3603
2026-06-23T09:38:03.0736953Z             },
2026-06-23T09:38:03.0737058Z             {
2026-06-23T09:38:03.0737188Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0737305Z               "line": 17
2026-06-23T09:38:03.0737409Z             }
2026-06-23T09:38:03.0737505Z           ]
2026-06-23T09:38:03.0737604Z         },
2026-06-23T09:38:03.0737703Z         "int": {
2026-06-23T09:38:03.0737813Z           "complete": true,
2026-06-23T09:38:03.0737928Z           "evidence": [
2026-06-23T09:38:03.0738032Z             {
2026-06-23T09:38:03.0738185Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.0738299Z               "line": 341
2026-06-23T09:38:03.0738404Z             },
2026-06-23T09:38:03.0738505Z             {
2026-06-23T09:38:03.0738651Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0738762Z               "line": 677
2026-06-23T09:38:03.0738866Z             },
2026-06-23T09:38:03.0739043Z             {
2026-06-23T09:38:03.0739190Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0739300Z               "line": 975
2026-06-23T09:38:03.0739401Z             }
2026-06-23T09:38:03.0739505Z           ]
2026-06-23T09:38:03.0739605Z         },
2026-06-23T09:38:03.0739711Z         "unit": {
2026-06-23T09:38:03.0739815Z           "complete": true,
2026-06-23T09:38:03.0739930Z           "evidence": [
2026-06-23T09:38:03.0740036Z             {
2026-06-23T09:38:03.0740186Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0740295Z               "line": 651
2026-06-23T09:38:03.0740397Z             },
2026-06-23T09:38:03.0740501Z             {
2026-06-23T09:38:03.0740639Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0740759Z               "line": 686
2026-06-23T09:38:03.0740863Z             },
2026-06-23T09:38:03.0740969Z             {
2026-06-23T09:38:03.0741122Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.0741225Z               "line": 944
2026-06-23T09:38:03.0741327Z             },
2026-06-23T09:38:03.0741426Z             {
2026-06-23T09:38:03.0741573Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-23T09:38:03.0741680Z               "line": 201
2026-06-23T09:38:03.0741779Z             },
2026-06-23T09:38:03.0741884Z             {
2026-06-23T09:38:03.0742027Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0742131Z               "line": 442
2026-06-23T09:38:03.0742232Z             },
2026-06-23T09:38:03.0742328Z             {
2026-06-23T09:38:03.0742474Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0742583Z               "line": 456
2026-06-23T09:38:03.0742678Z             },
2026-06-23T09:38:03.0742777Z             {
2026-06-23T09:38:03.0742920Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0743026Z               "line": 475
2026-06-23T09:38:03.0743129Z             },
2026-06-23T09:38:03.0743230Z             {
2026-06-23T09:38:03.0743373Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T09:38:03.0743477Z               "line": 120
2026-06-23T09:38:03.0743574Z             },
2026-06-23T09:38:03.0743683Z             {
2026-06-23T09:38:03.0743816Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-23T09:38:03.0743931Z               "line": 163
2026-06-23T09:38:03.0744035Z             },
2026-06-23T09:38:03.0744236Z             {
2026-06-23T09:38:03.0744374Z               "path": "crates/spt-store/src/spool.rs",
2026-06-23T09:38:03.0744484Z               "line": 530
2026-06-23T09:38:03.0744589Z             },
2026-06-23T09:38:03.0744694Z             {
2026-06-23T09:38:03.0744819Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0744923Z               "line": 616
2026-06-23T09:38:03.0745114Z             },
2026-06-23T09:38:03.0745219Z             {
2026-06-23T09:38:03.0745350Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.0745460Z               "line": 1006
2026-06-23T09:38:03.0745564Z             }
2026-06-23T09:38:03.0745663Z           ]
2026-06-23T09:38:03.0745749Z         }
2026-06-23T09:38:03.0745850Z       }
2026-06-23T09:38:03.0745954Z     },
2026-06-23T09:38:03.0746054Z     {
2026-06-23T09:38:03.0746169Z       "id": "REQ-NET-2",
2026-06-23T09:38:03.0746383Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-23T09:38:03.0746503Z       "requiredStages": [
2026-06-23T09:38:03.0746612Z         "impl"
2026-06-23T09:38:03.0746712Z       ],
2026-06-23T09:38:03.0746822Z       "stages": {
2026-06-23T09:38:03.0746922Z         "doc": {
2026-06-23T09:38:03.0747046Z           "complete": false,
2026-06-23T09:38:03.0747156Z           "evidence": []
2026-06-23T09:38:03.0747256Z         },
2026-06-23T09:38:03.0747361Z         "impl": {
2026-06-23T09:38:03.0747480Z           "complete": true,
2026-06-23T09:38:03.0747580Z           "evidence": [
2026-06-23T09:38:03.0747676Z             {
2026-06-23T09:38:03.0747823Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:03.0747932Z               "line": 57
2026-06-23T09:38:03.0748037Z             },
2026-06-23T09:38:03.0748136Z             {
2026-06-23T09:38:03.0748282Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0748397Z               "line": 71
2026-06-23T09:38:03.0748502Z             },
2026-06-23T09:38:03.0748601Z             {
2026-06-23T09:38:03.0748750Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0748845Z               "line": 81
2026-06-23T09:38:03.0749036Z             },
2026-06-23T09:38:03.0749127Z             {
2026-06-23T09:38:03.0749264Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0749370Z               "line": 159
2026-06-23T09:38:03.0749480Z             },
2026-06-23T09:38:03.0749584Z             {
2026-06-23T09:38:03.0749727Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0749832Z               "line": 175
2026-06-23T09:38:03.0749933Z             },
2026-06-23T09:38:03.0750033Z             {
2026-06-23T09:38:03.0750170Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-23T09:38:03.0750267Z               "line": 190
2026-06-23T09:38:03.0750376Z             }
2026-06-23T09:38:03.0750475Z           ]
2026-06-23T09:38:03.0750582Z         },
2026-06-23T09:38:03.0750686Z         "int": {
2026-06-23T09:38:03.0750804Z           "complete": false,
2026-06-23T09:38:03.0750904Z           "evidence": []
2026-06-23T09:38:03.0751010Z         },
2026-06-23T09:38:03.0751108Z         "unit": {
2026-06-23T09:38:03.0751219Z           "complete": true,
2026-06-23T09:38:03.0751333Z           "evidence": [
2026-06-23T09:38:03.0751437Z             {
2026-06-23T09:38:03.0751577Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:03.0751691Z               "line": 402
2026-06-23T09:38:03.0751785Z             }
2026-06-23T09:38:03.0751892Z           ]
2026-06-23T09:38:03.0751986Z         }
2026-06-23T09:38:03.0752090Z       }
2026-06-23T09:38:03.0752178Z     },
2026-06-23T09:38:03.0752277Z     {
2026-06-23T09:38:03.0752386Z       "id": "REQ-NET-3",
2026-06-23T09:38:03.0752597Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-23T09:38:03.0752706Z       "requiredStages": [
2026-06-23T09:38:03.0752807Z         "impl",
2026-06-23T09:38:03.0752916Z         "unit"
2026-06-23T09:38:03.0753010Z       ],
2026-06-23T09:38:03.0753215Z       "stages": {
2026-06-23T09:38:03.0753318Z         "doc": {
2026-06-23T09:38:03.0753427Z           "complete": false,
2026-06-23T09:38:03.0753533Z           "evidence": []
2026-06-23T09:38:03.0753632Z         },
2026-06-23T09:38:03.0753737Z         "impl": {
2026-06-23T09:38:03.0753843Z           "complete": true,
2026-06-23T09:38:03.0754042Z           "evidence": [
2026-06-23T09:38:03.0754139Z             {
2026-06-23T09:38:03.0754285Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0754396Z               "line": 39
2026-06-23T09:38:03.0754491Z             },
2026-06-23T09:38:03.0754586Z             {
2026-06-23T09:38:03.0754720Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0754829Z               "line": 182
2026-06-23T09:38:03.0754934Z             },
2026-06-23T09:38:03.0755040Z             {
2026-06-23T09:38:03.0755163Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-23T09:38:03.0755273Z               "line": 333
2026-06-23T09:38:03.0755379Z             },
2026-06-23T09:38:03.0755478Z             {
2026-06-23T09:38:03.0755621Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T09:38:03.0755737Z               "line": 36
2026-06-23T09:38:03.0755826Z             },
2026-06-23T09:38:03.0755929Z             {
2026-06-23T09:38:03.0756082Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0756199Z               "line": 158
2026-06-23T09:38:03.0756304Z             },
2026-06-23T09:38:03.0756400Z             {
2026-06-23T09:38:03.0756552Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0756657Z               "line": 238
2026-06-23T09:38:03.0756767Z             },
2026-06-23T09:38:03.0756867Z             {
2026-06-23T09:38:03.0757011Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0757115Z               "line": 259
2026-06-23T09:38:03.0757224Z             },
2026-06-23T09:38:03.0757326Z             {
2026-06-23T09:38:03.0757473Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0757587Z               "line": 317
2026-06-23T09:38:03.0757687Z             },
2026-06-23T09:38:03.0757791Z             {
2026-06-23T09:38:03.0757936Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0758045Z               "line": 336
2026-06-23T09:38:03.0758150Z             },
2026-06-23T09:38:03.0758251Z             {
2026-06-23T09:38:03.0758397Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0758506Z               "line": 374
2026-06-23T09:38:03.0758616Z             },
2026-06-23T09:38:03.0758714Z             {
2026-06-23T09:38:03.0758861Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0759043Z               "line": 419
2026-06-23T09:38:03.0759147Z             },
2026-06-23T09:38:03.0759253Z             {
2026-06-23T09:38:03.0759396Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0759514Z               "line": 432
2026-06-23T09:38:03.0759615Z             },
2026-06-23T09:38:03.0759720Z             {
2026-06-23T09:38:03.0759869Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:03.0759968Z               "line": 29
2026-06-23T09:38:03.0760077Z             },
2026-06-23T09:38:03.0760168Z             {
2026-06-23T09:38:03.0760311Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:03.0760406Z               "line": 72
2026-06-23T09:38:03.0760513Z             },
2026-06-23T09:38:03.0760611Z             {
2026-06-23T09:38:03.0760745Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:03.0760851Z               "line": 123
2026-06-23T09:38:03.0760945Z             }
2026-06-23T09:38:03.0761041Z           ]
2026-06-23T09:38:03.0761142Z         },
2026-06-23T09:38:03.0761246Z         "int": {
2026-06-23T09:38:03.0761349Z           "complete": false,
2026-06-23T09:38:03.0761454Z           "evidence": []
2026-06-23T09:38:03.0761678Z         },
2026-06-23T09:38:03.0761784Z         "unit": {
2026-06-23T09:38:03.0761888Z           "complete": true,
2026-06-23T09:38:03.0761997Z           "evidence": [
2026-06-23T09:38:03.0762099Z             {
2026-06-23T09:38:03.0762237Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T09:38:03.0762345Z               "line": 223
2026-06-23T09:38:03.0762546Z             },
2026-06-23T09:38:03.0762650Z             {
2026-06-23T09:38:03.0762800Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T09:38:03.0762899Z               "line": 351
2026-06-23T09:38:03.0762999Z             },
2026-06-23T09:38:03.0763100Z             {
2026-06-23T09:38:03.0763242Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-23T09:38:03.0763347Z               "line": 504
2026-06-23T09:38:03.0763444Z             },
2026-06-23T09:38:03.0763552Z             {
2026-06-23T09:38:03.0763680Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T09:38:03.0763776Z               "line": 93
2026-06-23T09:38:03.0763883Z             },
2026-06-23T09:38:03.0763982Z             {
2026-06-23T09:38:03.0764122Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-23T09:38:03.0764226Z               "line": 142
2026-06-23T09:38:03.0764331Z             },
2026-06-23T09:38:03.0764432Z             {
2026-06-23T09:38:03.0764579Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:03.0764685Z               "line": 315
2026-06-23T09:38:03.0764784Z             },
2026-06-23T09:38:03.0764884Z             {
2026-06-23T09:38:03.0765023Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:03.0765128Z               "line": 355
2026-06-23T09:38:03.0765237Z             },
2026-06-23T09:38:03.0765338Z             {
2026-06-23T09:38:03.0765476Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-23T09:38:03.0765580Z               "line": 494
2026-06-23T09:38:03.0765686Z             }
2026-06-23T09:38:03.0765790Z           ]
2026-06-23T09:38:03.0765890Z         }
2026-06-23T09:38:03.0765996Z       }
2026-06-23T09:38:03.0766095Z     },
2026-06-23T09:38:03.0766196Z     {
2026-06-23T09:38:03.0766316Z       "id": "REQ-NODE-IDENTITY",
2026-06-23T09:38:03.0766595Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-23T09:38:03.0766712Z       "requiredStages": [
2026-06-23T09:38:03.0766821Z         "impl",
2026-06-23T09:38:03.0766931Z         "unit"
2026-06-23T09:38:03.0767027Z       ],
2026-06-23T09:38:03.0767126Z       "stages": {
2026-06-23T09:38:03.0767227Z         "doc": {
2026-06-23T09:38:03.0767332Z           "complete": false,
2026-06-23T09:38:03.0767441Z           "evidence": []
2026-06-23T09:38:03.0767537Z         },
2026-06-23T09:38:03.0767647Z         "impl": {
2026-06-23T09:38:03.0767756Z           "complete": true,
2026-06-23T09:38:03.0767861Z           "evidence": [
2026-06-23T09:38:03.0767966Z             {
2026-06-23T09:38:03.0768118Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0768229Z               "line": 60
2026-06-23T09:38:03.0768337Z             },
2026-06-23T09:38:03.0768442Z             {
2026-06-23T09:38:03.0768586Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0768690Z               "line": 68
2026-06-23T09:38:03.0768797Z             },
2026-06-23T09:38:03.0768901Z             {
2026-06-23T09:38:03.0769104Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0769209Z               "line": 86
2026-06-23T09:38:03.0769312Z             },
2026-06-23T09:38:03.0769416Z             {
2026-06-23T09:38:03.0769556Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0769660Z               "line": 120
2026-06-23T09:38:03.0769760Z             },
2026-06-23T09:38:03.0769866Z             {
2026-06-23T09:38:03.0770003Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0770119Z               "line": 127
2026-06-23T09:38:03.0770318Z             },
2026-06-23T09:38:03.0770424Z             {
2026-06-23T09:38:03.0770561Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0770665Z               "line": 143
2026-06-23T09:38:03.0770767Z             },
2026-06-23T09:38:03.0770871Z             {
2026-06-23T09:38:03.0771014Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-23T09:38:03.0771209Z               "line": 16
2026-06-23T09:38:03.0771314Z             }
2026-06-23T09:38:03.0771416Z           ]
2026-06-23T09:38:03.0771514Z         },
2026-06-23T09:38:03.0771615Z         "int": {
2026-06-23T09:38:03.0771731Z           "complete": false,
2026-06-23T09:38:03.0771839Z           "evidence": []
2026-06-23T09:38:03.0771942Z         },
2026-06-23T09:38:03.0772048Z         "unit": {
2026-06-23T09:38:03.0772154Z           "complete": true,
2026-06-23T09:38:03.0772267Z           "evidence": [
2026-06-23T09:38:03.0772363Z             {
2026-06-23T09:38:03.0772501Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0772620Z               "line": 199
2026-06-23T09:38:03.0772721Z             },
2026-06-23T09:38:03.0772826Z             {
2026-06-23T09:38:03.0772958Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0773064Z               "line": 218
2026-06-23T09:38:03.0773169Z             },
2026-06-23T09:38:03.0773268Z             {
2026-06-23T09:38:03.0773417Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0773526Z               "line": 234
2026-06-23T09:38:03.0773627Z             },
2026-06-23T09:38:03.0773732Z             {
2026-06-23T09:38:03.0773864Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-23T09:38:03.0773975Z               "line": 256
2026-06-23T09:38:03.0774079Z             },
2026-06-23T09:38:03.0774188Z             {
2026-06-23T09:38:03.0774316Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-23T09:38:03.0774429Z               "line": 124
2026-06-23T09:38:03.0774519Z             },
2026-06-23T09:38:03.0774629Z             {
2026-06-23T09:38:03.0774772Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-23T09:38:03.0774881Z               "line": 140
2026-06-23T09:38:03.0774987Z             },
2026-06-23T09:38:03.0775091Z             {
2026-06-23T09:38:03.0775225Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-23T09:38:03.0775335Z               "line": 155
2026-06-23T09:38:03.0775434Z             }
2026-06-23T09:38:03.0775540Z           ]
2026-06-23T09:38:03.0775645Z         }
2026-06-23T09:38:03.0775744Z       }
2026-06-23T09:38:03.0775835Z     },
2026-06-23T09:38:03.0775946Z     {
2026-06-23T09:38:03.0776059Z       "id": "REQ-NOTIF-1",
2026-06-23T09:38:03.0776455Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-23T09:38:03.0776571Z       "requiredStages": [
2026-06-23T09:38:03.0776679Z         "impl",
2026-06-23T09:38:03.0776785Z         "unit",
2026-06-23T09:38:03.0776891Z         "int"
2026-06-23T09:38:03.0776993Z       ],
2026-06-23T09:38:03.0777097Z       "stages": {
2026-06-23T09:38:03.0777203Z         "doc": {
2026-06-23T09:38:03.0777319Z           "complete": false,
2026-06-23T09:38:03.0777424Z           "evidence": []
2026-06-23T09:38:03.0777520Z         },
2026-06-23T09:38:03.0777620Z         "impl": {
2026-06-23T09:38:03.0777734Z           "complete": true,
2026-06-23T09:38:03.0777845Z           "evidence": [
2026-06-23T09:38:03.0777958Z             {
2026-06-23T09:38:03.0778102Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0778211Z               "line": 514
2026-06-23T09:38:03.0778316Z             },
2026-06-23T09:38:03.0778417Z             {
2026-06-23T09:38:03.0778554Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0778650Z               "line": 30
2026-06-23T09:38:03.0778761Z             },
2026-06-23T09:38:03.0778864Z             {
2026-06-23T09:38:03.0779085Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0779308Z               "line": 69
2026-06-23T09:38:03.0779405Z             },
2026-06-23T09:38:03.0779513Z             {
2026-06-23T09:38:03.0779645Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0779751Z               "line": 93
2026-06-23T09:38:03.0779858Z             },
2026-06-23T09:38:03.0780049Z             {
2026-06-23T09:38:03.0780187Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0780296Z               "line": 107
2026-06-23T09:38:03.0780392Z             },
2026-06-23T09:38:03.0780497Z             {
2026-06-23T09:38:03.0780635Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0780754Z               "line": 142
2026-06-23T09:38:03.0780854Z             },
2026-06-23T09:38:03.0780955Z             {
2026-06-23T09:38:03.0781088Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0781197Z               "line": 187
2026-06-23T09:38:03.0781308Z             },
2026-06-23T09:38:03.0781398Z             {
2026-06-23T09:38:03.0781536Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0781642Z               "line": 258
2026-06-23T09:38:03.0781746Z             },
2026-06-23T09:38:03.0781846Z             {
2026-06-23T09:38:03.0781976Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0782094Z               "line": 372
2026-06-23T09:38:03.0782194Z             },
2026-06-23T09:38:03.0782291Z             {
2026-06-23T09:38:03.0782422Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0782536Z               "line": 479
2026-06-23T09:38:03.0782637Z             },
2026-06-23T09:38:03.0782742Z             {
2026-06-23T09:38:03.0782884Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0782990Z               "line": 24
2026-06-23T09:38:03.0783094Z             },
2026-06-23T09:38:03.0783199Z             {
2026-06-23T09:38:03.0783347Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0783451Z               "line": 34
2026-06-23T09:38:03.0783558Z             },
2026-06-23T09:38:03.0783667Z             {
2026-06-23T09:38:03.0783804Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0783925Z               "line": 60
2026-06-23T09:38:03.0784024Z             },
2026-06-23T09:38:03.0784129Z             {
2026-06-23T09:38:03.0784268Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0784372Z               "line": 82
2026-06-23T09:38:03.0784477Z             },
2026-06-23T09:38:03.0784578Z             {
2026-06-23T09:38:03.0784729Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0784834Z               "line": 94
2026-06-23T09:38:03.0784938Z             },
2026-06-23T09:38:03.0785036Z             {
2026-06-23T09:38:03.0785189Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:03.0785294Z               "line": 96
2026-06-23T09:38:03.0785394Z             },
2026-06-23T09:38:03.0785499Z             {
2026-06-23T09:38:03.0785647Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-23T09:38:03.0785766Z               "line": 44
2026-06-23T09:38:03.0785862Z             },
2026-06-23T09:38:03.0785966Z             {
2026-06-23T09:38:03.0786115Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T09:38:03.0786219Z               "line": 20
2026-06-23T09:38:03.0786328Z             },
2026-06-23T09:38:03.0786430Z             {
2026-06-23T09:38:03.0786562Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T09:38:03.0786672Z               "line": 30
2026-06-23T09:38:03.0786783Z             },
2026-06-23T09:38:03.0786891Z             {
2026-06-23T09:38:03.0787025Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T09:38:03.0787140Z               "line": 50
2026-06-23T09:38:03.0787239Z             },
2026-06-23T09:38:03.0787340Z             {
2026-06-23T09:38:03.0787474Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0787677Z               "line": 28
2026-06-23T09:38:03.0787786Z             },
2026-06-23T09:38:03.0787884Z             {
2026-06-23T09:38:03.0788032Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0788176Z               "line": 126
2026-06-23T09:38:03.0788285Z             },
2026-06-23T09:38:03.0788457Z             {
2026-06-23T09:38:03.0788595Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0788701Z               "line": 161
2026-06-23T09:38:03.0788801Z             },
2026-06-23T09:38:03.0788909Z             {
2026-06-23T09:38:03.0789124Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0789234Z               "line": 202
2026-06-23T09:38:03.0789340Z             },
2026-06-23T09:38:03.0789443Z             {
2026-06-23T09:38:03.0789577Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0789688Z               "line": 213
2026-06-23T09:38:03.0789796Z             },
2026-06-23T09:38:03.0789897Z             {
2026-06-23T09:38:03.0790036Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0790149Z               "line": 238
2026-06-23T09:38:03.0790244Z             },
2026-06-23T09:38:03.0790344Z             {
2026-06-23T09:38:03.0790470Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0790589Z               "line": 261
2026-06-23T09:38:03.0790691Z             },
2026-06-23T09:38:03.0790799Z             {
2026-06-23T09:38:03.0790943Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0791052Z               "line": 86
2026-06-23T09:38:03.0791147Z             }
2026-06-23T09:38:03.0791249Z           ]
2026-06-23T09:38:03.0791353Z         },
2026-06-23T09:38:03.0791457Z         "int": {
2026-06-23T09:38:03.0791568Z           "complete": true,
2026-06-23T09:38:03.0791677Z           "evidence": [
2026-06-23T09:38:03.0791777Z             {
2026-06-23T09:38:03.0791921Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.0792016Z               "line": 285
2026-06-23T09:38:03.0792124Z             },
2026-06-23T09:38:03.0792231Z             {
2026-06-23T09:38:03.0792378Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-23T09:38:03.0792483Z               "line": 145
2026-06-23T09:38:03.0792583Z             },
2026-06-23T09:38:03.0792692Z             {
2026-06-23T09:38:03.0792837Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0792949Z               "line": 686
2026-06-23T09:38:03.0793049Z             },
2026-06-23T09:38:03.0793154Z             {
2026-06-23T09:38:03.0793292Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0793396Z               "line": 1104
2026-06-23T09:38:03.0793502Z             }
2026-06-23T09:38:03.0793603Z           ]
2026-06-23T09:38:03.0793702Z         },
2026-06-23T09:38:03.0793804Z         "unit": {
2026-06-23T09:38:03.0793912Z           "complete": true,
2026-06-23T09:38:03.0794026Z           "evidence": [
2026-06-23T09:38:03.0794132Z             {
2026-06-23T09:38:03.0794279Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0794389Z               "line": 572
2026-06-23T09:38:03.0794494Z             },
2026-06-23T09:38:03.0794599Z             {
2026-06-23T09:38:03.0794738Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0794852Z               "line": 636
2026-06-23T09:38:03.0794951Z             },
2026-06-23T09:38:03.0795057Z             {
2026-06-23T09:38:03.0795194Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0795308Z               "line": 740
2026-06-23T09:38:03.0795413Z             },
2026-06-23T09:38:03.0795521Z             {
2026-06-23T09:38:03.0795649Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0795759Z               "line": 772
2026-06-23T09:38:03.0795864Z             },
2026-06-23T09:38:03.0795963Z             {
2026-06-23T09:38:03.0796207Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0796321Z               "line": 840
2026-06-23T09:38:03.0796427Z             },
2026-06-23T09:38:03.0796531Z             {
2026-06-23T09:38:03.0796666Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0796784Z               "line": 898
2026-06-23T09:38:03.0796965Z             },
2026-06-23T09:38:03.0797070Z             {
2026-06-23T09:38:03.0797199Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0797305Z               "line": 1173
2026-06-23T09:38:03.0797413Z             },
2026-06-23T09:38:03.0797514Z             {
2026-06-23T09:38:03.0797653Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0797761Z               "line": 157
2026-06-23T09:38:03.0797856Z             },
2026-06-23T09:38:03.0797963Z             {
2026-06-23T09:38:03.0798095Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0798208Z               "line": 250
2026-06-23T09:38:03.0798318Z             },
2026-06-23T09:38:03.0798421Z             {
2026-06-23T09:38:03.0798559Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-23T09:38:03.0798674Z               "line": 273
2026-06-23T09:38:03.0798778Z             },
2026-06-23T09:38:03.0798868Z             {
2026-06-23T09:38:03.0799112Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:03.0799223Z               "line": 355
2026-06-23T09:38:03.0799327Z             },
2026-06-23T09:38:03.0799427Z             {
2026-06-23T09:38:03.0799575Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-23T09:38:03.0799684Z               "line": 392
2026-06-23T09:38:03.0799784Z             },
2026-06-23T09:38:03.0799886Z             {
2026-06-23T09:38:03.0800032Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-23T09:38:03.0800147Z               "line": 131
2026-06-23T09:38:03.0800248Z             },
2026-06-23T09:38:03.0800356Z             {
2026-06-23T09:38:03.0800501Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T09:38:03.0800610Z               "line": 72
2026-06-23T09:38:03.0800713Z             },
2026-06-23T09:38:03.0800809Z             {
2026-06-23T09:38:03.0800950Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-23T09:38:03.0801049Z               "line": 97
2026-06-23T09:38:03.0801154Z             },
2026-06-23T09:38:03.0801261Z             {
2026-06-23T09:38:03.0801393Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0801504Z               "line": 379
2026-06-23T09:38:03.0801608Z             },
2026-06-23T09:38:03.0801712Z             {
2026-06-23T09:38:03.0801837Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0801955Z               "line": 417
2026-06-23T09:38:03.0802065Z             },
2026-06-23T09:38:03.0802162Z             {
2026-06-23T09:38:03.0802294Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0802404Z               "line": 433
2026-06-23T09:38:03.0802509Z             },
2026-06-23T09:38:03.0802618Z             {
2026-06-23T09:38:03.0802743Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0802861Z               "line": 472
2026-06-23T09:38:03.0802961Z             },
2026-06-23T09:38:03.0803063Z             {
2026-06-23T09:38:03.0803194Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0803305Z               "line": 489
2026-06-23T09:38:03.0803411Z             },
2026-06-23T09:38:03.0803519Z             {
2026-06-23T09:38:03.0803661Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0803767Z               "line": 517
2026-06-23T09:38:03.0803871Z             },
2026-06-23T09:38:03.0803976Z             {
2026-06-23T09:38:03.0804115Z               "path": "crates/spt-store/src/notif.rs",
2026-06-23T09:38:03.0804233Z               "line": 548
2026-06-23T09:38:03.0804329Z             },
2026-06-23T09:38:03.0804434Z             {
2026-06-23T09:38:03.0804683Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0804787Z               "line": 745
2026-06-23T09:38:03.0804882Z             }
2026-06-23T09:38:03.0804993Z           ]
2026-06-23T09:38:03.0805101Z         }
2026-06-23T09:38:03.0805202Z       }
2026-06-23T09:38:03.0807597Z     },
2026-06-23T09:38:03.0807721Z     {
2026-06-23T09:38:03.0807983Z       "id": "REQ-NOTIF-2",
2026-06-23T09:38:03.0808288Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-23T09:38:03.0808398Z       "requiredStages": [
2026-06-23T09:38:03.0808504Z         "doc",
2026-06-23T09:38:03.0808613Z         "impl",
2026-06-23T09:38:03.0808716Z         "unit",
2026-06-23T09:38:03.0808821Z         "int"
2026-06-23T09:38:03.0808925Z       ],
2026-06-23T09:38:03.0809119Z       "stages": {
2026-06-23T09:38:03.0809230Z         "doc": {
2026-06-23T09:38:03.0809343Z           "complete": true,
2026-06-23T09:38:03.0809453Z           "evidence": [
2026-06-23T09:38:03.0809559Z             {
2026-06-23T09:38:03.0809677Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0809797Z               "line": 522
2026-06-23T09:38:03.0809897Z             },
2026-06-23T09:38:03.0810001Z             {
2026-06-23T09:38:03.0810131Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.0810239Z               "line": 131
2026-06-23T09:38:03.0810344Z             }
2026-06-23T09:38:03.0810446Z           ]
2026-06-23T09:38:03.0810536Z         },
2026-06-23T09:38:03.0810631Z         "impl": {
2026-06-23T09:38:03.0810747Z           "complete": true,
2026-06-23T09:38:03.0810851Z           "evidence": [
2026-06-23T09:38:03.0810950Z             {
2026-06-23T09:38:03.0811104Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0811217Z               "line": 287
2026-06-23T09:38:03.0811316Z             },
2026-06-23T09:38:03.0811416Z             {
2026-06-23T09:38:03.0811557Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0811671Z               "line": 301
2026-06-23T09:38:03.0811763Z             },
2026-06-23T09:38:03.0811867Z             {
2026-06-23T09:38:03.0812005Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0812106Z               "line": 326
2026-06-23T09:38:03.0812196Z             },
2026-06-23T09:38:03.0812305Z             {
2026-06-23T09:38:03.0812463Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.0812567Z               "line": 239
2026-06-23T09:38:03.0812674Z             },
2026-06-23T09:38:03.0812764Z             {
2026-06-23T09:38:03.0812916Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.0813022Z               "line": 95
2026-06-23T09:38:03.0813131Z             },
2026-06-23T09:38:03.0813236Z             {
2026-06-23T09:38:03.0813361Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0813464Z               "line": 2579
2026-06-23T09:38:03.0813550Z             },
2026-06-23T09:38:03.0813657Z             {
2026-06-23T09:38:03.0813778Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0813889Z               "line": 2628
2026-06-23T09:38:03.0813995Z             },
2026-06-23T09:38:03.0814093Z             {
2026-06-23T09:38:03.0814207Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0814308Z               "line": 2707
2026-06-23T09:38:03.0814417Z             },
2026-06-23T09:38:03.0814517Z             {
2026-06-23T09:38:03.0814633Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0814746Z               "line": 2746
2026-06-23T09:38:03.0814846Z             }
2026-06-23T09:38:03.0814943Z           ]
2026-06-23T09:38:03.0815033Z         },
2026-06-23T09:38:03.0815142Z         "int": {
2026-06-23T09:38:03.0815243Z           "complete": true,
2026-06-23T09:38:03.0815361Z           "evidence": [
2026-06-23T09:38:03.0815466Z             {
2026-06-23T09:38:03.0815615Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0815834Z               "line": 812
2026-06-23T09:38:03.0815939Z             },
2026-06-23T09:38:03.0816043Z             {
2026-06-23T09:38:03.0816187Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0816295Z               "line": 1347
2026-06-23T09:38:03.0816400Z             }
2026-06-23T09:38:03.0816504Z           ]
2026-06-23T09:38:03.0816698Z         },
2026-06-23T09:38:03.0816803Z         "unit": {
2026-06-23T09:38:03.0816918Z           "complete": true,
2026-06-23T09:38:03.0817022Z           "evidence": [
2026-06-23T09:38:03.0817118Z             {
2026-06-23T09:38:03.0817256Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0817360Z               "line": 1022
2026-06-23T09:38:03.0817466Z             },
2026-06-23T09:38:03.0817566Z             {
2026-06-23T09:38:03.0817708Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0817815Z               "line": 1090
2026-06-23T09:38:03.0817914Z             },
2026-06-23T09:38:03.0818023Z             {
2026-06-23T09:38:03.0818148Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0818257Z               "line": 9606
2026-06-23T09:38:03.0818357Z             },
2026-06-23T09:38:03.0818463Z             {
2026-06-23T09:38:03.0818586Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0818681Z               "line": 9661
2026-06-23T09:38:03.0818792Z             }
2026-06-23T09:38:03.0818891Z           ]
2026-06-23T09:38:03.0819064Z         }
2026-06-23T09:38:03.0819159Z       }
2026-06-23T09:38:03.0819257Z     },
2026-06-23T09:38:03.0819357Z     {
2026-06-23T09:38:03.0819480Z       "id": "REQ-PAIR-1",
2026-06-23T09:38:03.0819612Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-23T09:38:03.0819718Z       "requiredStages": [
2026-06-23T09:38:03.0819823Z         "impl",
2026-06-23T09:38:03.0819927Z         "unit",
2026-06-23T09:38:03.0820023Z         "int"
2026-06-23T09:38:03.0820114Z       ],
2026-06-23T09:38:03.0820213Z       "stages": {
2026-06-23T09:38:03.0820314Z         "doc": {
2026-06-23T09:38:03.0820443Z           "complete": false,
2026-06-23T09:38:03.0820552Z           "evidence": []
2026-06-23T09:38:03.0820652Z         },
2026-06-23T09:38:03.0820757Z         "impl": {
2026-06-23T09:38:03.0820867Z           "complete": true,
2026-06-23T09:38:03.0820977Z           "evidence": [
2026-06-23T09:38:03.0821082Z             {
2026-06-23T09:38:03.0821238Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:03.0821363Z               "line": 27
2026-06-23T09:38:03.0821462Z             },
2026-06-23T09:38:03.0821563Z             {
2026-06-23T09:38:03.0821712Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:03.0821810Z               "line": 88
2026-06-23T09:38:03.0821919Z             },
2026-06-23T09:38:03.0822015Z             {
2026-06-23T09:38:03.0822164Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:03.0822265Z               "line": 110
2026-06-23T09:38:03.0822386Z             },
2026-06-23T09:38:03.0822489Z             {
2026-06-23T09:38:03.0822643Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:03.0822747Z               "line": 153
2026-06-23T09:38:03.0822852Z             },
2026-06-23T09:38:03.0822957Z             {
2026-06-23T09:38:03.0823104Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:03.0823229Z               "line": 182
2026-06-23T09:38:03.0823347Z             },
2026-06-23T09:38:03.0823447Z             {
2026-06-23T09:38:03.0823606Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0823710Z               "line": 29
2026-06-23T09:38:03.0823820Z             },
2026-06-23T09:38:03.0823916Z             {
2026-06-23T09:38:03.0824091Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-23T09:38:03.0824193Z               "line": 31
2026-06-23T09:38:03.0824301Z             },
2026-06-23T09:38:03.0824406Z             {
2026-06-23T09:38:03.0824663Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0824767Z               "line": 44
2026-06-23T09:38:03.0824858Z             },
2026-06-23T09:38:03.0824964Z             {
2026-06-23T09:38:03.0825120Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0825221Z               "line": 171
2026-06-23T09:38:03.0825440Z             },
2026-06-23T09:38:03.0825541Z             {
2026-06-23T09:38:03.0825697Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0825803Z               "line": 376
2026-06-23T09:38:03.0825907Z             }
2026-06-23T09:38:03.0826007Z           ]
2026-06-23T09:38:03.0826103Z         },
2026-06-23T09:38:03.0826203Z         "int": {
2026-06-23T09:38:03.0826317Z           "complete": true,
2026-06-23T09:38:03.0826428Z           "evidence": [
2026-06-23T09:38:03.0826527Z             {
2026-06-23T09:38:03.0826680Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0826800Z               "line": 647
2026-06-23T09:38:03.0826889Z             },
2026-06-23T09:38:03.0826993Z             {
2026-06-23T09:38:03.0827127Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0827239Z               "line": 889
2026-06-23T09:38:03.0827338Z             }
2026-06-23T09:38:03.0827435Z           ]
2026-06-23T09:38:03.0827534Z         },
2026-06-23T09:38:03.0827639Z         "unit": {
2026-06-23T09:38:03.0827769Z           "complete": true,
2026-06-23T09:38:03.0827873Z           "evidence": [
2026-06-23T09:38:03.0827977Z             {
2026-06-23T09:38:03.0828131Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:03.0828235Z               "line": 236
2026-06-23T09:38:03.0828336Z             },
2026-06-23T09:38:03.0828431Z             {
2026-06-23T09:38:03.0828588Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-23T09:38:03.0828689Z               "line": 349
2026-06-23T09:38:03.0828808Z             },
2026-06-23T09:38:03.0828917Z             {
2026-06-23T09:38:03.0829141Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0829246Z               "line": 194
2026-06-23T09:38:03.0829343Z             },
2026-06-23T09:38:03.0829456Z             {
2026-06-23T09:38:03.0829614Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0829733Z               "line": 216
2026-06-23T09:38:03.0829832Z             },
2026-06-23T09:38:03.0829936Z             {
2026-06-23T09:38:03.0830087Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0830186Z               "line": 230
2026-06-23T09:38:03.0830292Z             },
2026-06-23T09:38:03.0830397Z             {
2026-06-23T09:38:03.0830549Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0830650Z               "line": 242
2026-06-23T09:38:03.0830754Z             },
2026-06-23T09:38:03.0830864Z             {
2026-06-23T09:38:03.0831012Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0831121Z               "line": 256
2026-06-23T09:38:03.0831222Z             },
2026-06-23T09:38:03.0831322Z             {
2026-06-23T09:38:03.0831469Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0831576Z               "line": 270
2026-06-23T09:38:03.0831684Z             },
2026-06-23T09:38:03.0831784Z             {
2026-06-23T09:38:03.0831928Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0832027Z               "line": 277
2026-06-23T09:38:03.0832133Z             },
2026-06-23T09:38:03.0832234Z             {
2026-06-23T09:38:03.0832393Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-23T09:38:03.0832503Z               "line": 295
2026-06-23T09:38:03.0832607Z             },
2026-06-23T09:38:03.0832715Z             {
2026-06-23T09:38:03.0832863Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0833077Z               "line": 968
2026-06-23T09:38:03.0833174Z             },
2026-06-23T09:38:03.0833269Z             {
2026-06-23T09:38:03.0833426Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0833536Z               "line": 1051
2026-06-23T09:38:03.0833641Z             },
2026-06-23T09:38:03.0833746Z             {
2026-06-23T09:38:03.0833993Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0834099Z               "line": 1121
2026-06-23T09:38:03.0834204Z             },
2026-06-23T09:38:03.0834308Z             {
2026-06-23T09:38:03.0834443Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0834552Z               "line": 1182
2026-06-23T09:38:03.0834651Z             },
2026-06-23T09:38:03.0834758Z             {
2026-06-23T09:38:03.0834908Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0835010Z               "line": 1238
2026-06-23T09:38:03.0835115Z             },
2026-06-23T09:38:03.0835218Z             {
2026-06-23T09:38:03.0835370Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0835486Z               "line": 1457
2026-06-23T09:38:03.0835585Z             }
2026-06-23T09:38:03.0835685Z           ]
2026-06-23T09:38:03.0835786Z         }
2026-06-23T09:38:03.0835895Z       }
2026-06-23T09:38:03.0835995Z     },
2026-06-23T09:38:03.0836101Z     {
2026-06-23T09:38:03.0836219Z       "id": "REQ-PAIR-2",
2026-06-23T09:38:03.0836382Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-23T09:38:03.0836501Z       "requiredStages": [],
2026-06-23T09:38:03.0836601Z       "stages": {
2026-06-23T09:38:03.0836707Z         "doc": {
2026-06-23T09:38:03.0836810Z           "complete": false,
2026-06-23T09:38:03.0836925Z           "evidence": []
2026-06-23T09:38:03.0837026Z         },
2026-06-23T09:38:03.0837129Z         "impl": {
2026-06-23T09:38:03.0837240Z           "complete": false,
2026-06-23T09:38:03.0837351Z           "evidence": []
2026-06-23T09:38:03.0837453Z         },
2026-06-23T09:38:03.0837553Z         "int": {
2026-06-23T09:38:03.0837658Z           "complete": false,
2026-06-23T09:38:03.0837766Z           "evidence": []
2026-06-23T09:38:03.0837870Z         },
2026-06-23T09:38:03.0837966Z         "unit": {
2026-06-23T09:38:03.0838076Z           "complete": false,
2026-06-23T09:38:03.0838185Z           "evidence": []
2026-06-23T09:38:03.0838285Z         }
2026-06-23T09:38:03.0838386Z       }
2026-06-23T09:38:03.0838485Z     },
2026-06-23T09:38:03.0838586Z     {
2026-06-23T09:38:03.0838705Z       "id": "REQ-PAIR-3",
2026-06-23T09:38:03.0838872Z       "title": "Fetch current pairing code from any paired node",
2026-06-23T09:38:03.0839077Z       "requiredStages": [
2026-06-23T09:38:03.0839177Z         "impl",
2026-06-23T09:38:03.0839283Z         "unit"
2026-06-23T09:38:03.0839387Z       ],
2026-06-23T09:38:03.0839491Z       "stages": {
2026-06-23T09:38:03.0839588Z         "doc": {
2026-06-23T09:38:03.0839696Z           "complete": false,
2026-06-23T09:38:03.0839806Z           "evidence": []
2026-06-23T09:38:03.0839899Z         },
2026-06-23T09:38:03.0839996Z         "impl": {
2026-06-23T09:38:03.0840112Z           "complete": true,
2026-06-23T09:38:03.0840213Z           "evidence": [
2026-06-23T09:38:03.0840321Z             {
2026-06-23T09:38:03.0840448Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0840559Z               "line": 3914
2026-06-23T09:38:03.0840661Z             },
2026-06-23T09:38:03.0840761Z             {
2026-06-23T09:38:03.0840886Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0840985Z               "line": 3983
2026-06-23T09:38:03.0841085Z             },
2026-06-23T09:38:03.0841187Z             {
2026-06-23T09:38:03.0841314Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0841424Z               "line": 4364
2026-06-23T09:38:03.0841530Z             },
2026-06-23T09:38:03.0841639Z             {
2026-06-23T09:38:03.0841763Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0841977Z               "line": 5616
2026-06-23T09:38:03.0842097Z             }
2026-06-23T09:38:03.0842202Z           ]
2026-06-23T09:38:03.0842287Z         },
2026-06-23T09:38:03.0842393Z         "int": {
2026-06-23T09:38:03.0842507Z           "complete": false,
2026-06-23T09:38:03.0842616Z           "evidence": []
2026-06-23T09:38:03.0842713Z         },
2026-06-23T09:38:03.0842916Z         "unit": {
2026-06-23T09:38:03.0843030Z           "complete": true,
2026-06-23T09:38:03.0843139Z           "evidence": [
2026-06-23T09:38:03.0843243Z             {
2026-06-23T09:38:03.0843366Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0843472Z               "line": 11502
2026-06-23T09:38:03.0843576Z             },
2026-06-23T09:38:03.0843676Z             {
2026-06-23T09:38:03.0843801Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0843905Z               "line": 11717
2026-06-23T09:38:03.0844015Z             },
2026-06-23T09:38:03.0844120Z             {
2026-06-23T09:38:03.0844248Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0844359Z               "line": 12376
2026-06-23T09:38:03.0844458Z             },
2026-06-23T09:38:03.0844563Z             {
2026-06-23T09:38:03.0844684Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0844792Z               "line": 12395
2026-06-23T09:38:03.0844901Z             },
2026-06-23T09:38:03.0844999Z             {
2026-06-23T09:38:03.0845126Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0845226Z               "line": 12419
2026-06-23T09:38:03.0845337Z             },
2026-06-23T09:38:03.0845435Z             {
2026-06-23T09:38:03.0845560Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0845666Z               "line": 12438
2026-06-23T09:38:03.0845769Z             },
2026-06-23T09:38:03.0845873Z             {
2026-06-23T09:38:03.0845988Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0846093Z               "line": 12451
2026-06-23T09:38:03.0846197Z             },
2026-06-23T09:38:03.0846293Z             {
2026-06-23T09:38:03.0846422Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0846531Z               "line": 12460
2026-06-23T09:38:03.0846642Z             }
2026-06-23T09:38:03.0846747Z           ]
2026-06-23T09:38:03.0846851Z         }
2026-06-23T09:38:03.0846952Z       }
2026-06-23T09:38:03.0847056Z     },
2026-06-23T09:38:03.0847165Z     {
2026-06-23T09:38:03.0847281Z       "id": "REQ-PAIR-4",
2026-06-23T09:38:03.0847423Z       "title": "Subnet naming on first pairing",
2026-06-23T09:38:03.0847529Z       "requiredStages": [
2026-06-23T09:38:03.0847634Z         "impl",
2026-06-23T09:38:03.0847733Z         "unit"
2026-06-23T09:38:03.0847838Z       ],
2026-06-23T09:38:03.0847944Z       "stages": {
2026-06-23T09:38:03.0848047Z         "doc": {
2026-06-23T09:38:03.0848151Z           "complete": false,
2026-06-23T09:38:03.0848266Z           "evidence": []
2026-06-23T09:38:03.0848368Z         },
2026-06-23T09:38:03.0848478Z         "impl": {
2026-06-23T09:38:03.0848603Z           "complete": true,
2026-06-23T09:38:03.0848711Z           "evidence": [
2026-06-23T09:38:03.0848812Z             {
2026-06-23T09:38:03.0849045Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-23T09:38:03.0849151Z               "line": 174
2026-06-23T09:38:03.0849251Z             }
2026-06-23T09:38:03.0849360Z           ]
2026-06-23T09:38:03.0849461Z         },
2026-06-23T09:38:03.0849570Z         "int": {
2026-06-23T09:38:03.0849684Z           "complete": false,
2026-06-23T09:38:03.0849800Z           "evidence": []
2026-06-23T09:38:03.0849894Z         },
2026-06-23T09:38:03.0850004Z         "unit": {
2026-06-23T09:38:03.0850115Z           "complete": true,
2026-06-23T09:38:03.0850228Z           "evidence": [
2026-06-23T09:38:03.0850328Z             {
2026-06-23T09:38:03.0850482Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0850585Z               "line": 1294
2026-06-23T09:38:03.0850686Z             }
2026-06-23T09:38:03.0850895Z           ]
2026-06-23T09:38:03.0850994Z         }
2026-06-23T09:38:03.0851095Z       }
2026-06-23T09:38:03.0851208Z     },
2026-06-23T09:38:03.0851293Z     {
2026-06-23T09:38:03.0851412Z       "id": "REQ-PAIR-5",
2026-06-23T09:38:03.0851747Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-23T09:38:03.0851960Z       "requiredStages": [
2026-06-23T09:38:03.0852062Z         "impl",
2026-06-23T09:38:03.0852171Z         "unit",
2026-06-23T09:38:03.0852275Z         "int"
2026-06-23T09:38:03.0852381Z       ],
2026-06-23T09:38:03.0852485Z       "stages": {
2026-06-23T09:38:03.0852590Z         "doc": {
2026-06-23T09:38:03.0852701Z           "complete": false,
2026-06-23T09:38:03.0852804Z           "evidence": []
2026-06-23T09:38:03.0852910Z         },
2026-06-23T09:38:03.0853016Z         "impl": {
2026-06-23T09:38:03.0853123Z           "complete": true,
2026-06-23T09:38:03.0853234Z           "evidence": [
2026-06-23T09:38:03.0853340Z             {
2026-06-23T09:38:03.0853495Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0853605Z               "line": 44
2026-06-23T09:38:03.0853699Z             },
2026-06-23T09:38:03.0853803Z             {
2026-06-23T09:38:03.0853955Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0854066Z               "line": 96
2026-06-23T09:38:03.0854165Z             },
2026-06-23T09:38:03.0854275Z             {
2026-06-23T09:38:03.0854423Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0854536Z               "line": 107
2026-06-23T09:38:03.0854642Z             },
2026-06-23T09:38:03.0854742Z             {
2026-06-23T09:38:03.0854895Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0855004Z               "line": 124
2026-06-23T09:38:03.0855109Z             },
2026-06-23T09:38:03.0855209Z             {
2026-06-23T09:38:03.0855362Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0855476Z               "line": 155
2026-06-23T09:38:03.0855573Z             },
2026-06-23T09:38:03.0855667Z             {
2026-06-23T09:38:03.0855810Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0855921Z               "line": 195
2026-06-23T09:38:03.0856029Z             },
2026-06-23T09:38:03.0856135Z             {
2026-06-23T09:38:03.0856287Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0856391Z               "line": 251
2026-06-23T09:38:03.0856500Z             },
2026-06-23T09:38:03.0856601Z             {
2026-06-23T09:38:03.0856782Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T09:38:03.0856892Z               "line": 33
2026-06-23T09:38:03.0856992Z             },
2026-06-23T09:38:03.0857096Z             {
2026-06-23T09:38:03.0857259Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T09:38:03.0857359Z               "line": 45
2026-06-23T09:38:03.0857444Z             },
2026-06-23T09:38:03.0857540Z             {
2026-06-23T09:38:03.0857706Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T09:38:03.0857812Z               "line": 59
2026-06-23T09:38:03.0857921Z             },
2026-06-23T09:38:03.0858026Z             {
2026-06-23T09:38:03.0858189Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0858283Z               "line": 376
2026-06-23T09:38:03.0858389Z             }
2026-06-23T09:38:03.0858494Z           ]
2026-06-23T09:38:03.0858598Z         },
2026-06-23T09:38:03.0858702Z         "int": {
2026-06-23T09:38:03.0858807Z           "complete": true,
2026-06-23T09:38:03.0858919Z           "evidence": [
2026-06-23T09:38:03.0859086Z             {
2026-06-23T09:38:03.0859239Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0859348Z               "line": 889
2026-06-23T09:38:03.0859450Z             },
2026-06-23T09:38:03.0859663Z             {
2026-06-23T09:38:03.0859811Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0859915Z               "line": 342
2026-06-23T09:38:03.0860017Z             }
2026-06-23T09:38:03.0860126Z           ]
2026-06-23T09:38:03.0860230Z         },
2026-06-23T09:38:03.0860321Z         "unit": {
2026-06-23T09:38:03.0860550Z           "complete": true,
2026-06-23T09:38:03.0860656Z           "evidence": [
2026-06-23T09:38:03.0860765Z             {
2026-06-23T09:38:03.0860907Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0861014Z               "line": 293
2026-06-23T09:38:03.0861122Z             },
2026-06-23T09:38:03.0861217Z             {
2026-06-23T09:38:03.0861367Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0861474Z               "line": 304
2026-06-23T09:38:03.0861583Z             },
2026-06-23T09:38:03.0861679Z             {
2026-06-23T09:38:03.0861820Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.0861925Z               "line": 406
2026-06-23T09:38:03.0862025Z             },
2026-06-23T09:38:03.0862125Z             {
2026-06-23T09:38:03.0862283Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T09:38:03.0862388Z               "line": 72
2026-06-23T09:38:03.0862501Z             },
2026-06-23T09:38:03.0862603Z             {
2026-06-23T09:38:03.0862768Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T09:38:03.0862878Z               "line": 82
2026-06-23T09:38:03.0862984Z             },
2026-06-23T09:38:03.0863088Z             {
2026-06-23T09:38:03.0863251Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T09:38:03.0863360Z               "line": 100
2026-06-23T09:38:03.0863460Z             },
2026-06-23T09:38:03.0863566Z             {
2026-06-23T09:38:03.0863727Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T09:38:03.0863833Z               "line": 110
2026-06-23T09:38:03.0863938Z             },
2026-06-23T09:38:03.0864041Z             {
2026-06-23T09:38:03.0864198Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-23T09:38:03.0864306Z               "line": 125
2026-06-23T09:38:03.0864420Z             },
2026-06-23T09:38:03.0864510Z             {
2026-06-23T09:38:03.0864668Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0864762Z               "line": 1044
2026-06-23T09:38:03.0864869Z             },
2026-06-23T09:38:03.0864973Z             {
2026-06-23T09:38:03.0865111Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0865221Z               "line": 1110
2026-06-23T09:38:03.0865326Z             },
2026-06-23T09:38:03.0865431Z             {
2026-06-23T09:38:03.0865583Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.0865698Z               "line": 1357
2026-06-23T09:38:03.0865809Z             }
2026-06-23T09:38:03.0865912Z           ]
2026-06-23T09:38:03.0866022Z         }
2026-06-23T09:38:03.0866128Z       }
2026-06-23T09:38:03.0866232Z     },
2026-06-23T09:38:03.0866332Z     {
2026-06-23T09:38:03.0866448Z       "id": "REQ-PAIR-6",
2026-06-23T09:38:03.0866748Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-23T09:38:03.0866861Z       "requiredStages": [
2026-06-23T09:38:03.0866970Z         "impl",
2026-06-23T09:38:03.0867075Z         "unit"
2026-06-23T09:38:03.0867176Z       ],
2026-06-23T09:38:03.0867280Z       "stages": {
2026-06-23T09:38:03.0867385Z         "doc": {
2026-06-23T09:38:03.0867495Z           "complete": false,
2026-06-23T09:38:03.0867609Z           "evidence": []
2026-06-23T09:38:03.0867715Z         },
2026-06-23T09:38:03.0867819Z         "impl": {
2026-06-23T09:38:03.0867933Z           "complete": true,
2026-06-23T09:38:03.0868039Z           "evidence": [
2026-06-23T09:38:03.0868153Z             {
2026-06-23T09:38:03.0868354Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0868462Z               "line": 3983
2026-06-23T09:38:03.0868567Z             },
2026-06-23T09:38:03.0868654Z             {
2026-06-23T09:38:03.0868787Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0868892Z               "line": 4364
2026-06-23T09:38:03.0869181Z             },
2026-06-23T09:38:03.0869291Z             {
2026-06-23T09:38:03.0869428Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0869536Z               "line": 18
2026-06-23T09:38:03.0869637Z             },
2026-06-23T09:38:03.0869738Z             {
2026-06-23T09:38:03.0869879Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0869990Z               "line": 49
2026-06-23T09:38:03.0870081Z             },
2026-06-23T09:38:03.0870180Z             {
2026-06-23T09:38:03.0870305Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0870414Z               "line": 318
2026-06-23T09:38:03.0870513Z             }
2026-06-23T09:38:03.0870624Z           ]
2026-06-23T09:38:03.0870724Z         },
2026-06-23T09:38:03.0870828Z         "int": {
2026-06-23T09:38:03.0870939Z           "complete": false,
2026-06-23T09:38:03.0871048Z           "evidence": []
2026-06-23T09:38:03.0871148Z         },
2026-06-23T09:38:03.0871259Z         "unit": {
2026-06-23T09:38:03.0871372Z           "complete": true,
2026-06-23T09:38:03.0871482Z           "evidence": [
2026-06-23T09:38:03.0871588Z             {
2026-06-23T09:38:03.0871701Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0871812Z               "line": 12473
2026-06-23T09:38:03.0871908Z             },
2026-06-23T09:38:03.0872016Z             {
2026-06-23T09:38:03.0872143Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0872258Z               "line": 12490
2026-06-23T09:38:03.0872361Z             },
2026-06-23T09:38:03.0872451Z             {
2026-06-23T09:38:03.0872586Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0872694Z               "line": 383
2026-06-23T09:38:03.0872804Z             },
2026-06-23T09:38:03.0872910Z             {
2026-06-23T09:38:03.0873042Z               "path": "crates/spt/src/elevation.rs",
2026-06-23T09:38:03.0873158Z               "line": 392
2026-06-23T09:38:03.0873257Z             }
2026-06-23T09:38:03.0873361Z           ]
2026-06-23T09:38:03.0873468Z         }
2026-06-23T09:38:03.0873572Z       }
2026-06-23T09:38:03.0873672Z     },
2026-06-23T09:38:03.0873773Z     {
2026-06-23T09:38:03.0873887Z       "id": "REQ-PAIR-7",
2026-06-23T09:38:03.0874078Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-23T09:38:03.0874202Z       "requiredStages": [],
2026-06-23T09:38:03.0874302Z       "stages": {
2026-06-23T09:38:03.0874408Z         "doc": {
2026-06-23T09:38:03.0874522Z           "complete": false,
2026-06-23T09:38:03.0874630Z           "evidence": []
2026-06-23T09:38:03.0874730Z         },
2026-06-23T09:38:03.0874839Z         "impl": {
2026-06-23T09:38:03.0874956Z           "complete": false,
2026-06-23T09:38:03.0875066Z           "evidence": []
2026-06-23T09:38:03.0875177Z         },
2026-06-23T09:38:03.0875275Z         "int": {
2026-06-23T09:38:03.0875390Z           "complete": false,
2026-06-23T09:38:03.0875515Z           "evidence": []
2026-06-23T09:38:03.0875604Z         },
2026-06-23T09:38:03.0875715Z         "unit": {
2026-06-23T09:38:03.0875829Z           "complete": false,
2026-06-23T09:38:03.0875938Z           "evidence": []
2026-06-23T09:38:03.0876039Z         }
2026-06-23T09:38:03.0876138Z       }
2026-06-23T09:38:03.0876238Z     },
2026-06-23T09:38:03.0876335Z     {
2026-06-23T09:38:03.0876449Z       "id": "REQ-PAIR-8",
2026-06-23T09:38:03.0877906Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-23T09:38:03.0878145Z       "requiredStages": [
2026-06-23T09:38:03.0878255Z         "impl",
2026-06-23T09:38:03.0878360Z         "unit"
2026-06-23T09:38:03.0878464Z       ],
2026-06-23T09:38:03.0878565Z       "stages": {
2026-06-23T09:38:03.0878760Z         "doc": {
2026-06-23T09:38:03.0878880Z           "complete": false,
2026-06-23T09:38:03.0879070Z           "evidence": []
2026-06-23T09:38:03.0879175Z         },
2026-06-23T09:38:03.0879281Z         "impl": {
2026-06-23T09:38:03.0879394Z           "complete": true,
2026-06-23T09:38:03.0879499Z           "evidence": [
2026-06-23T09:38:03.0879600Z             {
2026-06-23T09:38:03.0879751Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.0879856Z               "line": 577
2026-06-23T09:38:03.0879955Z             },
2026-06-23T09:38:03.0880045Z             {
2026-06-23T09:38:03.0880212Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T09:38:03.0880308Z               "line": 22
2026-06-23T09:38:03.0880411Z             },
2026-06-23T09:38:03.0880517Z             {
2026-06-23T09:38:03.0880669Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T09:38:03.0880773Z               "line": 76
2026-06-23T09:38:03.0880879Z             },
2026-06-23T09:38:03.0880979Z             {
2026-06-23T09:38:03.0881122Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T09:38:03.0881237Z               "line": 127
2026-06-23T09:38:03.0881341Z             }
2026-06-23T09:38:03.0881437Z           ]
2026-06-23T09:38:03.0881528Z         },
2026-06-23T09:38:03.0881632Z         "int": {
2026-06-23T09:38:03.0881747Z           "complete": false,
2026-06-23T09:38:03.0881852Z           "evidence": []
2026-06-23T09:38:03.0881961Z         },
2026-06-23T09:38:03.0882067Z         "unit": {
2026-06-23T09:38:03.0882177Z           "complete": true,
2026-06-23T09:38:03.0882290Z           "evidence": [
2026-06-23T09:38:03.0882386Z             {
2026-06-23T09:38:03.0882543Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T09:38:03.0882651Z               "line": 183
2026-06-23T09:38:03.0882762Z             },
2026-06-23T09:38:03.0882865Z             {
2026-06-23T09:38:03.0883006Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T09:38:03.0883127Z               "line": 195
2026-06-23T09:38:03.0883231Z             },
2026-06-23T09:38:03.0883341Z             {
2026-06-23T09:38:03.0883484Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T09:38:03.0883593Z               "line": 211
2026-06-23T09:38:03.0883694Z             },
2026-06-23T09:38:03.0883794Z             {
2026-06-23T09:38:03.0883945Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-23T09:38:03.0884056Z               "line": 227
2026-06-23T09:38:03.0884160Z             }
2026-06-23T09:38:03.0884256Z           ]
2026-06-23T09:38:03.0884362Z         }
2026-06-23T09:38:03.0886895Z       }
2026-06-23T09:38:03.0887014Z     },
2026-06-23T09:38:03.0887118Z     {
2026-06-23T09:38:03.0887239Z       "id": "REQ-PICKER-1",
2026-06-23T09:38:03.0891625Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-23T09:38:03.0892069Z       "requiredStages": [
2026-06-23T09:38:03.0892178Z         "impl",
2026-06-23T09:38:03.0892282Z         "unit"
2026-06-23T09:38:03.0892389Z       ],
2026-06-23T09:38:03.0892497Z       "stages": {
2026-06-23T09:38:03.0892612Z         "doc": {
2026-06-23T09:38:03.0892718Z           "complete": false,
2026-06-23T09:38:03.0892836Z           "evidence": []
2026-06-23T09:38:03.0892942Z         },
2026-06-23T09:38:03.0893042Z         "impl": {
2026-06-23T09:38:03.0893160Z           "complete": true,
2026-06-23T09:38:03.0893264Z           "evidence": [
2026-06-23T09:38:03.0893378Z             {
2026-06-23T09:38:03.0893514Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0893629Z               "line": 248
2026-06-23T09:38:03.0893730Z             },
2026-06-23T09:38:03.0893829Z             {
2026-06-23T09:38:03.0893978Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.0894087Z               "line": 280
2026-06-23T09:38:03.0894191Z             }
2026-06-23T09:38:03.0894292Z           ]
2026-06-23T09:38:03.0894397Z         },
2026-06-23T09:38:03.0894505Z         "int": {
2026-06-23T09:38:03.0894621Z           "complete": false,
2026-06-23T09:38:03.0894735Z           "evidence": []
2026-06-23T09:38:03.0894835Z         },
2026-06-23T09:38:03.0894941Z         "unit": {
2026-06-23T09:38:03.0895050Z           "complete": true,
2026-06-23T09:38:03.0895159Z           "evidence": [
2026-06-23T09:38:03.0895260Z             {
2026-06-23T09:38:03.0895402Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.0895513Z               "line": 476
2026-06-23T09:38:03.0895618Z             },
2026-06-23T09:38:03.0895721Z             {
2026-06-23T09:38:03.0895859Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.0895959Z               "line": 753
2026-06-23T09:38:03.0896067Z             },
2026-06-23T09:38:03.0896177Z             {
2026-06-23T09:38:03.0896339Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.0896448Z               "line": 915
2026-06-23T09:38:03.0896554Z             },
2026-06-23T09:38:03.0896654Z             {
2026-06-23T09:38:03.0896791Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:03.0896902Z               "line": 474
2026-06-23T09:38:03.0897002Z             }
2026-06-23T09:38:03.0897106Z           ]
2026-06-23T09:38:03.0897198Z         }
2026-06-23T09:38:03.0897302Z       }
2026-06-23T09:38:03.0897397Z     },
2026-06-23T09:38:03.0897494Z     {
2026-06-23T09:38:03.0897612Z       "id": "REQ-PICKER-2",
2026-06-23T09:38:03.0899671Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-23T09:38:03.0899809Z       "requiredStages": [
2026-06-23T09:38:03.0899918Z         "impl",
2026-06-23T09:38:03.0900010Z         "unit"
2026-06-23T09:38:03.0900119Z       ],
2026-06-23T09:38:03.0900223Z       "stages": {
2026-06-23T09:38:03.0900320Z         "doc": {
2026-06-23T09:38:03.0900439Z           "complete": false,
2026-06-23T09:38:03.0900548Z           "evidence": []
2026-06-23T09:38:03.0900867Z         },
2026-06-23T09:38:03.0900967Z         "impl": {
2026-06-23T09:38:03.0901076Z           "complete": true,
2026-06-23T09:38:03.0901184Z           "evidence": [
2026-06-23T09:38:03.0901289Z             {
2026-06-23T09:38:03.0901451Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0901560Z               "line": 183
2026-06-23T09:38:03.0901752Z             },
2026-06-23T09:38:03.0901856Z             {
2026-06-23T09:38:03.0902000Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.0902104Z               "line": 321
2026-06-23T09:38:03.0902199Z             }
2026-06-23T09:38:03.0902305Z           ]
2026-06-23T09:38:03.0902400Z         },
2026-06-23T09:38:03.0902504Z         "int": {
2026-06-23T09:38:03.0902610Z           "complete": false,
2026-06-23T09:38:03.0902724Z           "evidence": []
2026-06-23T09:38:03.0902824Z         },
2026-06-23T09:38:03.0902930Z         "unit": {
2026-06-23T09:38:03.0903043Z           "complete": true,
2026-06-23T09:38:03.0903153Z           "evidence": [
2026-06-23T09:38:03.0903260Z             {
2026-06-23T09:38:03.0903405Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.0903521Z               "line": 655
2026-06-23T09:38:03.0903621Z             }
2026-06-23T09:38:03.0903724Z           ]
2026-06-23T09:38:03.0903819Z         }
2026-06-23T09:38:03.0903924Z       }
2026-06-23T09:38:03.0904027Z     },
2026-06-23T09:38:03.0904126Z     {
2026-06-23T09:38:03.0904242Z       "id": "REQ-PICKER-3",
2026-06-23T09:38:03.0906727Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-23T09:38:03.0906857Z       "requiredStages": [
2026-06-23T09:38:03.0906956Z         "impl",
2026-06-23T09:38:03.0907061Z         "unit"
2026-06-23T09:38:03.0907153Z       ],
2026-06-23T09:38:03.0907261Z       "stages": {
2026-06-23T09:38:03.0907361Z         "doc": {
2026-06-23T09:38:03.0907467Z           "complete": false,
2026-06-23T09:38:03.0907581Z           "evidence": []
2026-06-23T09:38:03.0907676Z         },
2026-06-23T09:38:03.0907781Z         "impl": {
2026-06-23T09:38:03.0907886Z           "complete": true,
2026-06-23T09:38:03.0907996Z           "evidence": [
2026-06-23T09:38:03.0908096Z             {
2026-06-23T09:38:03.0908234Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.0908335Z               "line": 124
2026-06-23T09:38:03.0908439Z             }
2026-06-23T09:38:03.0908535Z           ]
2026-06-23T09:38:03.0908635Z         },
2026-06-23T09:38:03.0908740Z         "int": {
2026-06-23T09:38:03.0908844Z           "complete": false,
2026-06-23T09:38:03.0909041Z           "evidence": []
2026-06-23T09:38:03.0909139Z         },
2026-06-23T09:38:03.0909248Z         "unit": {
2026-06-23T09:38:03.0909354Z           "complete": true,
2026-06-23T09:38:03.0909464Z           "evidence": [
2026-06-23T09:38:03.0909568Z             {
2026-06-23T09:38:03.0909702Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.0909816Z               "line": 479
2026-06-23T09:38:03.0909921Z             }
2026-06-23T09:38:03.0910022Z           ]
2026-06-23T09:38:03.0910126Z         }
2026-06-23T09:38:03.0910226Z       }
2026-06-23T09:38:03.0910332Z     },
2026-06-23T09:38:03.0910427Z     {
2026-06-23T09:38:03.0910541Z       "id": "REQ-PICKER-4",
2026-06-23T09:38:03.0912588Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-23T09:38:03.0912813Z       "requiredStages": [
2026-06-23T09:38:03.0912926Z         "impl",
2026-06-23T09:38:03.0913031Z         "unit"
2026-06-23T09:38:03.0913132Z       ],
2026-06-23T09:38:03.0913236Z       "stages": {
2026-06-23T09:38:03.0913341Z         "doc": {
2026-06-23T09:38:03.0913461Z           "complete": false,
2026-06-23T09:38:03.0913561Z           "evidence": []
2026-06-23T09:38:03.0913665Z         },
2026-06-23T09:38:03.0913776Z         "impl": {
2026-06-23T09:38:03.0913880Z           "complete": true,
2026-06-23T09:38:03.0913980Z           "evidence": [
2026-06-23T09:38:03.0914086Z             {
2026-06-23T09:38:03.0914237Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0914350Z               "line": 353
2026-06-23T09:38:03.0914456Z             },
2026-06-23T09:38:03.0914559Z             {
2026-06-23T09:38:03.0914691Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.0914802Z               "line": 105
2026-06-23T09:38:03.0914897Z             }
2026-06-23T09:38:03.0915006Z           ]
2026-06-23T09:38:03.0915098Z         },
2026-06-23T09:38:03.0915207Z         "int": {
2026-06-23T09:38:03.0915325Z           "complete": false,
2026-06-23T09:38:03.0915437Z           "evidence": []
2026-06-23T09:38:03.0915532Z         },
2026-06-23T09:38:03.0915640Z         "unit": {
2026-06-23T09:38:03.0915751Z           "complete": true,
2026-06-23T09:38:03.0915856Z           "evidence": [
2026-06-23T09:38:03.0915960Z             {
2026-06-23T09:38:03.0916113Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0916222Z               "line": 1246
2026-06-23T09:38:03.0916328Z             },
2026-06-23T09:38:03.0916433Z             {
2026-06-23T09:38:03.0916571Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.0916677Z               "line": 537
2026-06-23T09:38:03.0916776Z             }
2026-06-23T09:38:03.0916875Z           ]
2026-06-23T09:38:03.0916970Z         }
2026-06-23T09:38:03.0917074Z       }
2026-06-23T09:38:03.0917173Z     },
2026-06-23T09:38:03.0917273Z     {
2026-06-23T09:38:03.0917384Z       "id": "REQ-PICKER-5",
2026-06-23T09:38:03.0920549Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-23T09:38:03.0920686Z       "requiredStages": [
2026-06-23T09:38:03.0920791Z         "impl",
2026-06-23T09:38:03.0921006Z         "unit"
2026-06-23T09:38:03.0921096Z       ],
2026-06-23T09:38:03.0921202Z       "stages": {
2026-06-23T09:38:03.0921306Z         "doc": {
2026-06-23T09:38:03.0921416Z           "complete": false,
2026-06-23T09:38:03.0921526Z           "evidence": []
2026-06-23T09:38:03.0921634Z         },
2026-06-23T09:38:03.0921736Z         "impl": {
2026-06-23T09:38:03.0921940Z           "complete": true,
2026-06-23T09:38:03.0922039Z           "evidence": [
2026-06-23T09:38:03.0922144Z             {
2026-06-23T09:38:03.0922266Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0922375Z               "line": 2156
2026-06-23T09:38:03.0922486Z             }
2026-06-23T09:38:03.0922586Z           ]
2026-06-23T09:38:03.0922685Z         },
2026-06-23T09:38:03.0922776Z         "int": {
2026-06-23T09:38:03.0922891Z           "complete": false,
2026-06-23T09:38:03.0922995Z           "evidence": []
2026-06-23T09:38:03.0923101Z         },
2026-06-23T09:38:03.0923201Z         "unit": {
2026-06-23T09:38:03.0923314Z           "complete": true,
2026-06-23T09:38:03.0923421Z           "evidence": [
2026-06-23T09:38:03.0923515Z             {
2026-06-23T09:38:03.0923649Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.0923754Z               "line": 8903
2026-06-23T09:38:03.0923864Z             }
2026-06-23T09:38:03.0923973Z           ]
2026-06-23T09:38:03.0924074Z         }
2026-06-23T09:38:03.0924177Z       }
2026-06-23T09:38:03.0924273Z     },
2026-06-23T09:38:03.0924375Z     {
2026-06-23T09:38:03.0924511Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-23T09:38:03.0925949Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-23T09:38:03.0926078Z       "requiredStages": [],
2026-06-23T09:38:03.0926186Z       "stages": {
2026-06-23T09:38:03.0926293Z         "doc": {
2026-06-23T09:38:03.0926406Z           "complete": false,
2026-06-23T09:38:03.0926525Z           "evidence": []
2026-06-23T09:38:03.0926627Z         },
2026-06-23T09:38:03.0926739Z         "impl": {
2026-06-23T09:38:03.0926845Z           "complete": false,
2026-06-23T09:38:03.0926956Z           "evidence": []
2026-06-23T09:38:03.0927064Z         },
2026-06-23T09:38:03.0927160Z         "int": {
2026-06-23T09:38:03.0927275Z           "complete": false,
2026-06-23T09:38:03.0927388Z           "evidence": []
2026-06-23T09:38:03.0927487Z         },
2026-06-23T09:38:03.0927588Z         "unit": {
2026-06-23T09:38:03.0927700Z           "complete": false,
2026-06-23T09:38:03.0927813Z           "evidence": []
2026-06-23T09:38:03.0927915Z         }
2026-06-23T09:38:03.0928019Z       }
2026-06-23T09:38:03.0928114Z     },
2026-06-23T09:38:03.0928216Z     {
2026-06-23T09:38:03.0928348Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-23T09:38:03.0929583Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-23T09:38:03.0929712Z       "requiredStages": [
2026-06-23T09:38:03.0929804Z         "impl",
2026-06-23T09:38:03.0929898Z         "unit"
2026-06-23T09:38:03.0930008Z       ],
2026-06-23T09:38:03.0930109Z       "stages": {
2026-06-23T09:38:03.0930213Z         "doc": {
2026-06-23T09:38:03.0930326Z           "complete": false,
2026-06-23T09:38:03.0930441Z           "evidence": []
2026-06-23T09:38:03.0930546Z         },
2026-06-23T09:38:03.0930640Z         "impl": {
2026-06-23T09:38:03.0930865Z           "complete": true,
2026-06-23T09:38:03.0930969Z           "evidence": [
2026-06-23T09:38:03.0931076Z             {
2026-06-23T09:38:03.0931214Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.0931322Z               "line": 300
2026-06-23T09:38:03.0931433Z             }
2026-06-23T09:38:03.0931523Z           ]
2026-06-23T09:38:03.0931720Z         },
2026-06-23T09:38:03.0931828Z         "int": {
2026-06-23T09:38:03.0931937Z           "complete": false,
2026-06-23T09:38:03.0932044Z           "evidence": []
2026-06-23T09:38:03.0932152Z         },
2026-06-23T09:38:03.0932257Z         "unit": {
2026-06-23T09:38:03.0932363Z           "complete": true,
2026-06-23T09:38:03.0932476Z           "evidence": [
2026-06-23T09:38:03.0932580Z             {
2026-06-23T09:38:03.0932718Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.0932826Z               "line": 510
2026-06-23T09:38:03.0932935Z             }
2026-06-23T09:38:03.0933036Z           ]
2026-06-23T09:38:03.0933136Z         }
2026-06-23T09:38:03.0933240Z       }
2026-06-23T09:38:03.0933336Z     },
2026-06-23T09:38:03.0933437Z     {
2026-06-23T09:38:03.0933560Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-23T09:38:03.0935134Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-23T09:38:03.0935269Z       "requiredStages": [
2026-06-23T09:38:03.0935372Z         "impl",
2026-06-23T09:38:03.0935481Z         "unit"
2026-06-23T09:38:03.0935586Z       ],
2026-06-23T09:38:03.0935675Z       "stages": {
2026-06-23T09:38:03.0935783Z         "doc": {
2026-06-23T09:38:03.0935893Z           "complete": false,
2026-06-23T09:38:03.0936009Z           "evidence": []
2026-06-23T09:38:03.0936108Z         },
2026-06-23T09:38:03.0936214Z         "impl": {
2026-06-23T09:38:03.0936337Z           "complete": true,
2026-06-23T09:38:03.0936451Z           "evidence": [
2026-06-23T09:38:03.0936562Z             {
2026-06-23T09:38:03.0936703Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.0936819Z               "line": 682
2026-06-23T09:38:03.0936919Z             }
2026-06-23T09:38:03.0937014Z           ]
2026-06-23T09:38:03.0937119Z         },
2026-06-23T09:38:03.0937220Z         "int": {
2026-06-23T09:38:03.0937333Z           "complete": false,
2026-06-23T09:38:03.0937439Z           "evidence": []
2026-06-23T09:38:03.0937539Z         },
2026-06-23T09:38:03.0937643Z         "unit": {
2026-06-23T09:38:03.0937749Z           "complete": true,
2026-06-23T09:38:03.0937864Z           "evidence": [
2026-06-23T09:38:03.0937967Z             {
2026-06-23T09:38:03.0938104Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.0938209Z               "line": 1145
2026-06-23T09:38:03.0938298Z             },
2026-06-23T09:38:03.0938403Z             {
2026-06-23T09:38:03.0938533Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.0938646Z               "line": 1159
2026-06-23T09:38:03.0938746Z             }
2026-06-23T09:38:03.0938851Z           ]
2026-06-23T09:38:03.0939042Z         }
2026-06-23T09:38:03.0939137Z       }
2026-06-23T09:38:03.0939237Z     },
2026-06-23T09:38:03.0939342Z     {
2026-06-23T09:38:03.0939471Z       "id": "REQ-PICKER-UX-V013",
2026-06-23T09:38:03.0941078Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-23T09:38:03.0941320Z       "requiredStages": [],
2026-06-23T09:38:03.0941430Z       "stages": {
2026-06-23T09:38:03.0941626Z         "doc": {
2026-06-23T09:38:03.0941735Z           "complete": false,
2026-06-23T09:38:03.0941844Z           "evidence": []
2026-06-23T09:38:03.0941950Z         },
2026-06-23T09:38:03.0942045Z         "impl": {
2026-06-23T09:38:03.0942164Z           "complete": false,
2026-06-23T09:38:03.0942270Z           "evidence": []
2026-06-23T09:38:03.0942369Z         },
2026-06-23T09:38:03.0942479Z         "int": {
2026-06-23T09:38:03.0942590Z           "complete": false,
2026-06-23T09:38:03.0942703Z           "evidence": []
2026-06-23T09:38:03.0942803Z         },
2026-06-23T09:38:03.0942909Z         "unit": {
2026-06-23T09:38:03.0943031Z           "complete": false,
2026-06-23T09:38:03.0943140Z           "evidence": []
2026-06-23T09:38:03.0943241Z         }
2026-06-23T09:38:03.0943330Z       }
2026-06-23T09:38:03.0943438Z     },
2026-06-23T09:38:03.0943534Z     {
2026-06-23T09:38:03.0943644Z       "id": "REQ-PRES-1",
2026-06-23T09:38:03.0945041Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-23T09:38:03.0945156Z       "requiredStages": [
2026-06-23T09:38:03.0945265Z         "impl",
2026-06-23T09:38:03.0945369Z         "unit",
2026-06-23T09:38:03.0945476Z         "int"
2026-06-23T09:38:03.0945575Z       ],
2026-06-23T09:38:03.0945675Z       "stages": {
2026-06-23T09:38:03.0945786Z         "doc": {
2026-06-23T09:38:03.0945899Z           "complete": true,
2026-06-23T09:38:03.0946012Z           "evidence": [
2026-06-23T09:38:03.0946108Z             {
2026-06-23T09:38:03.0946244Z               "path": "docs/DEFERRED.md",
2026-06-23T09:38:03.0946367Z               "line": 11
2026-06-23T09:38:03.0946473Z             }
2026-06-23T09:38:03.0946578Z           ]
2026-06-23T09:38:03.0946687Z         },
2026-06-23T09:38:03.0946807Z         "impl": {
2026-06-23T09:38:03.0946916Z           "complete": true,
2026-06-23T09:38:03.0947040Z           "evidence": [
2026-06-23T09:38:03.0947188Z             {
2026-06-23T09:38:03.0947336Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0947446Z               "line": 515
2026-06-23T09:38:03.0947551Z             },
2026-06-23T09:38:03.0947651Z             {
2026-06-23T09:38:03.0947799Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.0947917Z               "line": 567
2026-06-23T09:38:03.0948014Z             },
2026-06-23T09:38:03.0948151Z             {
2026-06-23T09:38:03.0948285Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0948410Z               "line": 188
2026-06-23T09:38:03.0948536Z             },
2026-06-23T09:38:03.0948641Z             {
2026-06-23T09:38:03.0948797Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0948910Z               "line": 214
2026-06-23T09:38:03.0949073Z             },
2026-06-23T09:38:03.0949173Z             {
2026-06-23T09:38:03.0949302Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T09:38:03.0949416Z               "line": 28
2026-06-23T09:38:03.0949516Z             },
2026-06-23T09:38:03.0949626Z             {
2026-06-23T09:38:03.0949774Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T09:38:03.0949869Z               "line": 105
2026-06-23T09:38:03.0949970Z             },
2026-06-23T09:38:03.0950179Z             {
2026-06-23T09:38:03.0950328Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T09:38:03.0950432Z               "line": 161
2026-06-23T09:38:03.0950541Z             },
2026-06-23T09:38:03.0950647Z             {
2026-06-23T09:38:03.0950784Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T09:38:03.0950895Z               "line": 180
2026-06-23T09:38:03.0951090Z             },
2026-06-23T09:38:03.0951201Z             {
2026-06-23T09:38:03.0951356Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0951465Z               "line": 421
2026-06-23T09:38:03.0951566Z             },
2026-06-23T09:38:03.0951666Z             {
2026-06-23T09:38:03.0951818Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.0951924Z               "line": 289
2026-06-23T09:38:03.0952028Z             },
2026-06-23T09:38:03.0952132Z             {
2026-06-23T09:38:03.0952286Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.0952385Z               "line": 336
2026-06-23T09:38:03.0952491Z             },
2026-06-23T09:38:03.0952596Z             {
2026-06-23T09:38:03.0952738Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.0952854Z               "line": 362
2026-06-23T09:38:03.0952958Z             },
2026-06-23T09:38:03.0953058Z             {
2026-06-23T09:38:03.0953211Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0953320Z               "line": 100
2026-06-23T09:38:03.0953430Z             }
2026-06-23T09:38:03.0953531Z           ]
2026-06-23T09:38:03.0953639Z         },
2026-06-23T09:38:03.0953748Z         "int": {
2026-06-23T09:38:03.0953858Z           "complete": true,
2026-06-23T09:38:03.0953966Z           "evidence": [
2026-06-23T09:38:03.0954065Z             {
2026-06-23T09:38:03.0954224Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.0954332Z               "line": 567
2026-06-23T09:38:03.0954433Z             },
2026-06-23T09:38:03.0954538Z             {
2026-06-23T09:38:03.0954680Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0954791Z               "line": 749
2026-06-23T09:38:03.0954900Z             },
2026-06-23T09:38:03.0955009Z             {
2026-06-23T09:38:03.0955148Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.0955267Z               "line": 1167
2026-06-23T09:38:03.0955372Z             }
2026-06-23T09:38:03.0955477Z           ]
2026-06-23T09:38:03.0955582Z         },
2026-06-23T09:38:03.0955687Z         "unit": {
2026-06-23T09:38:03.0955806Z           "complete": true,
2026-06-23T09:38:03.0955916Z           "evidence": [
2026-06-23T09:38:03.0956031Z             {
2026-06-23T09:38:03.0956178Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.0956288Z               "line": 674
2026-06-23T09:38:03.0956393Z             },
2026-06-23T09:38:03.0956492Z             {
2026-06-23T09:38:03.0956639Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T09:38:03.0956753Z               "line": 238
2026-06-23T09:38:03.0956847Z             },
2026-06-23T09:38:03.0956951Z             {
2026-06-23T09:38:03.0957090Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T09:38:03.0957204Z               "line": 269
2026-06-23T09:38:03.0957300Z             },
2026-06-23T09:38:03.0957410Z             {
2026-06-23T09:38:03.0957547Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T09:38:03.0957663Z               "line": 305
2026-06-23T09:38:03.0957782Z             },
2026-06-23T09:38:03.0957881Z             {
2026-06-23T09:38:03.0958025Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-23T09:38:03.0958125Z               "line": 336
2026-06-23T09:38:03.0958230Z             },
2026-06-23T09:38:03.0958330Z             {
2026-06-23T09:38:03.0958491Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.0958598Z               "line": 1217
2026-06-23T09:38:03.0958783Z             },
2026-06-23T09:38:03.0958889Z             {
2026-06-23T09:38:03.0959106Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.0959225Z               "line": 1163
2026-06-23T09:38:03.0959325Z             }
2026-06-23T09:38:03.0959423Z           ]
2026-06-23T09:38:03.0959528Z         }
2026-06-23T09:38:03.0959723Z       }
2026-06-23T09:38:03.0959828Z     },
2026-06-23T09:38:03.0959929Z     {
2026-06-23T09:38:03.0960038Z       "id": "REQ-RC-1",
2026-06-23T09:38:03.0962053Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-23T09:38:03.0962188Z       "requiredStages": [
2026-06-23T09:38:03.0962297Z         "impl",
2026-06-23T09:38:03.0962397Z         "unit",
2026-06-23T09:38:03.0962498Z         "int"
2026-06-23T09:38:03.0962597Z       ],
2026-06-23T09:38:03.0962702Z       "stages": {
2026-06-23T09:38:03.0962808Z         "doc": {
2026-06-23T09:38:03.0962903Z           "complete": false,
2026-06-23T09:38:03.0963012Z           "evidence": []
2026-06-23T09:38:03.0963114Z         },
2026-06-23T09:38:03.0963213Z         "impl": {
2026-06-23T09:38:03.0963332Z           "complete": true,
2026-06-23T09:38:03.0963438Z           "evidence": [
2026-06-23T09:38:03.0963547Z             {
2026-06-23T09:38:03.0963686Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.0963795Z               "line": 1066
2026-06-23T09:38:03.0963894Z             },
2026-06-23T09:38:03.0963990Z             {
2026-06-23T09:38:03.0964142Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.0964251Z               "line": 2077
2026-06-23T09:38:03.0964346Z             },
2026-06-23T09:38:03.0964446Z             {
2026-06-23T09:38:03.0964601Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.0964726Z               "line": 967
2026-06-23T09:38:03.0964831Z             },
2026-06-23T09:38:03.0964935Z             {
2026-06-23T09:38:03.0965079Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.0965188Z               "line": 1001
2026-06-23T09:38:03.0965293Z             },
2026-06-23T09:38:03.0965398Z             {
2026-06-23T09:38:03.0965531Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0965638Z               "line": 22
2026-06-23T09:38:03.0965751Z             },
2026-06-23T09:38:03.0965841Z             {
2026-06-23T09:38:03.0965976Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0966080Z               "line": 738
2026-06-23T09:38:03.0966189Z             }
2026-06-23T09:38:03.0966296Z           ]
2026-06-23T09:38:03.0966399Z         },
2026-06-23T09:38:03.0966509Z         "int": {
2026-06-23T09:38:03.0966611Z           "complete": true,
2026-06-23T09:38:03.0966718Z           "evidence": [
2026-06-23T09:38:03.0966819Z             {
2026-06-23T09:38:03.0966968Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0967081Z               "line": 263
2026-06-23T09:38:03.0967180Z             },
2026-06-23T09:38:03.0967285Z             {
2026-06-23T09:38:03.0967431Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0967540Z               "line": 290
2026-06-23T09:38:03.0967646Z             },
2026-06-23T09:38:03.0967750Z             {
2026-06-23T09:38:03.0967894Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.0967999Z               "line": 418
2026-06-23T09:38:03.0968213Z             }
2026-06-23T09:38:03.0968313Z           ]
2026-06-23T09:38:03.0968417Z         },
2026-06-23T09:38:03.0968519Z         "unit": {
2026-06-23T09:38:03.0968637Z           "complete": true,
2026-06-23T09:38:03.0968756Z           "evidence": [
2026-06-23T09:38:03.0968853Z             {
2026-06-23T09:38:03.0969066Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.0969290Z               "line": 1327
2026-06-23T09:38:03.0969390Z             },
2026-06-23T09:38:03.0969492Z             {
2026-06-23T09:38:03.0969614Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0969728Z               "line": 1214
2026-06-23T09:38:03.0969828Z             },
2026-06-23T09:38:03.0969927Z             {
2026-06-23T09:38:03.0970050Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0970160Z               "line": 1243
2026-06-23T09:38:03.0970260Z             },
2026-06-23T09:38:03.0970364Z             {
2026-06-23T09:38:03.0970494Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0970599Z               "line": 1256
2026-06-23T09:38:03.0970703Z             }
2026-06-23T09:38:03.0970804Z           ]
2026-06-23T09:38:03.0970904Z         }
2026-06-23T09:38:03.0970998Z       }
2026-06-23T09:38:03.0971095Z     },
2026-06-23T09:38:03.0971199Z     {
2026-06-23T09:38:03.0971328Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-23T09:38:03.0977079Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-23T09:38:03.0977260Z       "requiredStages": [
2026-06-23T09:38:03.0977360Z         "doc",
2026-06-23T09:38:03.0977476Z         "impl",
2026-06-23T09:38:03.0977565Z         "unit"
2026-06-23T09:38:03.0977674Z       ],
2026-06-23T09:38:03.0977778Z       "stages": {
2026-06-23T09:38:03.0977868Z         "doc": {
2026-06-23T09:38:03.0977991Z           "complete": true,
2026-06-23T09:38:03.0978096Z           "evidence": [
2026-06-23T09:38:03.0978202Z             {
2026-06-23T09:38:03.0978325Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.0978435Z               "line": 358
2026-06-23T09:38:03.0978540Z             },
2026-06-23T09:38:03.0978644Z             {
2026-06-23T09:38:03.0978883Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:03.0979069Z               "line": 440
2026-06-23T09:38:03.0979178Z             }
2026-06-23T09:38:03.0979269Z           ]
2026-06-23T09:38:03.0979364Z         },
2026-06-23T09:38:03.0979470Z         "impl": {
2026-06-23T09:38:03.0979593Z           "complete": true,
2026-06-23T09:38:03.0979803Z           "evidence": [
2026-06-23T09:38:03.0979898Z             {
2026-06-23T09:38:03.0980033Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0980142Z               "line": 226
2026-06-23T09:38:03.0980245Z             },
2026-06-23T09:38:03.0980345Z             {
2026-06-23T09:38:03.0980468Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0980581Z               "line": 285
2026-06-23T09:38:03.0980687Z             },
2026-06-23T09:38:03.0980797Z             {
2026-06-23T09:38:03.0980910Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0981021Z               "line": 300
2026-06-23T09:38:03.0981131Z             },
2026-06-23T09:38:03.0981234Z             {
2026-06-23T09:38:03.0981364Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0981474Z               "line": 315
2026-06-23T09:38:03.0981578Z             },
2026-06-23T09:38:03.0981674Z             {
2026-06-23T09:38:03.0981798Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0981917Z               "line": 364
2026-06-23T09:38:03.0982022Z             }
2026-06-23T09:38:03.0982122Z           ]
2026-06-23T09:38:03.0982222Z         },
2026-06-23T09:38:03.0982323Z         "int": {
2026-06-23T09:38:03.0982441Z           "complete": false,
2026-06-23T09:38:03.0982561Z           "evidence": []
2026-06-23T09:38:03.0982666Z         },
2026-06-23T09:38:03.0982770Z         "unit": {
2026-06-23T09:38:03.0982876Z           "complete": true,
2026-06-23T09:38:03.0982986Z           "evidence": [
2026-06-23T09:38:03.0983088Z             {
2026-06-23T09:38:03.0983212Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0983323Z               "line": 1271
2026-06-23T09:38:03.0983431Z             },
2026-06-23T09:38:03.0983532Z             {
2026-06-23T09:38:03.0983651Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0983751Z               "line": 1386
2026-06-23T09:38:03.0983857Z             }
2026-06-23T09:38:03.0983952Z           ]
2026-06-23T09:38:03.0984056Z         }
2026-06-23T09:38:03.0984161Z       }
2026-06-23T09:38:03.0984262Z     },
2026-06-23T09:38:03.0984367Z     {
2026-06-23T09:38:03.0984491Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-23T09:38:03.0988813Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-23T09:38:03.0989156Z       "requiredStages": [
2026-06-23T09:38:03.0989261Z         "doc",
2026-06-23T09:38:03.0989362Z         "impl",
2026-06-23T09:38:03.0989471Z         "unit"
2026-06-23T09:38:03.0989571Z       ],
2026-06-23T09:38:03.0989682Z       "stages": {
2026-06-23T09:38:03.0989777Z         "doc": {
2026-06-23T09:38:03.0989987Z           "complete": true,
2026-06-23T09:38:03.0990100Z           "evidence": [
2026-06-23T09:38:03.0990191Z             {
2026-06-23T09:38:03.0990335Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:03.0990439Z               "line": 461
2026-06-23T09:38:03.0990540Z             }
2026-06-23T09:38:03.0990645Z           ]
2026-06-23T09:38:03.0990739Z         },
2026-06-23T09:38:03.0990848Z         "impl": {
2026-06-23T09:38:03.0990953Z           "complete": true,
2026-06-23T09:38:03.0991065Z           "evidence": [
2026-06-23T09:38:03.0991160Z             {
2026-06-23T09:38:03.0991290Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0991394Z               "line": 421
2026-06-23T09:38:03.0991499Z             },
2026-06-23T09:38:03.0991605Z             {
2026-06-23T09:38:03.0991733Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0991847Z               "line": 437
2026-06-23T09:38:03.0991948Z             }
2026-06-23T09:38:03.0992052Z           ]
2026-06-23T09:38:03.0992162Z         },
2026-06-23T09:38:03.0992267Z         "int": {
2026-06-23T09:38:03.0992377Z           "complete": false,
2026-06-23T09:38:03.0992486Z           "evidence": []
2026-06-23T09:38:03.0992596Z         },
2026-06-23T09:38:03.0992696Z         "unit": {
2026-06-23T09:38:03.0992811Z           "complete": true,
2026-06-23T09:38:03.0992916Z           "evidence": [
2026-06-23T09:38:03.0995810Z             {
2026-06-23T09:38:03.0995993Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0996108Z               "line": 1521
2026-06-23T09:38:03.0996220Z             },
2026-06-23T09:38:03.0996335Z             {
2026-06-23T09:38:03.0996470Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0996577Z               "line": 1540
2026-06-23T09:38:03.0996683Z             },
2026-06-23T09:38:03.0996783Z             {
2026-06-23T09:38:03.0996911Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0997022Z               "line": 1552
2026-06-23T09:38:03.0997122Z             },
2026-06-23T09:38:03.0997226Z             {
2026-06-23T09:38:03.0997351Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.0997456Z               "line": 1580
2026-06-23T09:38:03.0997560Z             }
2026-06-23T09:38:03.0997656Z           ]
2026-06-23T09:38:03.0997760Z         }
2026-06-23T09:38:03.0997860Z       }
2026-06-23T09:38:03.0997962Z     },
2026-06-23T09:38:03.0998061Z     {
2026-06-23T09:38:03.0998180Z       "id": "REQ-RC-WIN-PASTE",
2026-06-23T09:38:03.1003066Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-23T09:38:03.1003466Z       "requiredStages": [
2026-06-23T09:38:03.1003581Z         "doc",
2026-06-23T09:38:03.1003677Z         "impl",
2026-06-23T09:38:03.1003781Z         "unit"
2026-06-23T09:38:03.1003880Z       ],
2026-06-23T09:38:03.1003982Z       "stages": {
2026-06-23T09:38:03.1004082Z         "doc": {
2026-06-23T09:38:03.1004195Z           "complete": true,
2026-06-23T09:38:03.1004304Z           "evidence": [
2026-06-23T09:38:03.1004410Z             {
2026-06-23T09:38:03.1004543Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-23T09:38:03.1004662Z               "line": 447
2026-06-23T09:38:03.1004767Z             }
2026-06-23T09:38:03.1004867Z           ]
2026-06-23T09:38:03.1004962Z         },
2026-06-23T09:38:03.1005068Z         "impl": {
2026-06-23T09:38:03.1005181Z           "complete": true,
2026-06-23T09:38:03.1005286Z           "evidence": [
2026-06-23T09:38:03.1005397Z             {
2026-06-23T09:38:03.1005515Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1005631Z               "line": 395
2026-06-23T09:38:03.1005735Z             },
2026-06-23T09:38:03.1005840Z             {
2026-06-23T09:38:03.1005965Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1006069Z               "line": 411
2026-06-23T09:38:03.1006173Z             },
2026-06-23T09:38:03.1006265Z             {
2026-06-23T09:38:03.1006392Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1006501Z               "line": 454
2026-06-23T09:38:03.1006606Z             },
2026-06-23T09:38:03.1006719Z             {
2026-06-23T09:38:03.1006837Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1006952Z               "line": 468
2026-06-23T09:38:03.1007052Z             },
2026-06-23T09:38:03.1007157Z             {
2026-06-23T09:38:03.1007277Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1007391Z               "line": 479
2026-06-23T09:38:03.1007500Z             }
2026-06-23T09:38:03.1007601Z           ]
2026-06-23T09:38:03.1007706Z         },
2026-06-23T09:38:03.1007810Z         "int": {
2026-06-23T09:38:03.1007930Z           "complete": false,
2026-06-23T09:38:03.1008030Z           "evidence": []
2026-06-23T09:38:03.1008135Z         },
2026-06-23T09:38:03.1008240Z         "unit": {
2026-06-23T09:38:03.1008350Z           "complete": true,
2026-06-23T09:38:03.1008459Z           "evidence": [
2026-06-23T09:38:03.1008555Z             {
2026-06-23T09:38:03.1008678Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1008788Z               "line": 1462
2026-06-23T09:38:03.1008899Z             },
2026-06-23T09:38:03.1009079Z             {
2026-06-23T09:38:03.1009204Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1009316Z               "line": 1483
2026-06-23T09:38:03.1009415Z             },
2026-06-23T09:38:03.1009526Z             {
2026-06-23T09:38:03.1009642Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1009762Z               "line": 1504
2026-06-23T09:38:03.1009862Z             }
2026-06-23T09:38:03.1009962Z           ]
2026-06-23T09:38:03.1010071Z         }
2026-06-23T09:38:03.1010173Z       }
2026-06-23T09:38:03.1010277Z     },
2026-06-23T09:38:03.1010377Z     {
2026-06-23T09:38:03.1010488Z       "id": "REQ-RCVIEW-1",
2026-06-23T09:38:03.1014994Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-23T09:38:03.1015361Z       "requiredStages": [
2026-06-23T09:38:03.1015474Z         "doc",
2026-06-23T09:38:03.1015576Z         "impl",
2026-06-23T09:38:03.1015680Z         "unit",
2026-06-23T09:38:03.1015784Z         "int"
2026-06-23T09:38:03.1015886Z       ],
2026-06-23T09:38:03.1015995Z       "stages": {
2026-06-23T09:38:03.1016099Z         "doc": {
2026-06-23T09:38:03.1016215Z           "complete": true,
2026-06-23T09:38:03.1016324Z           "evidence": [
2026-06-23T09:38:03.1016433Z             {
2026-06-23T09:38:03.1016548Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1016662Z               "line": 355
2026-06-23T09:38:03.1016777Z             }
2026-06-23T09:38:03.1016882Z           ]
2026-06-23T09:38:03.1016986Z         },
2026-06-23T09:38:03.1017095Z         "impl": {
2026-06-23T09:38:03.1017204Z           "complete": true,
2026-06-23T09:38:03.1017312Z           "evidence": [
2026-06-23T09:38:03.1017426Z             {
2026-06-23T09:38:03.1017580Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:03.1017688Z               "line": 528
2026-06-23T09:38:03.1017789Z             },
2026-06-23T09:38:03.1017894Z             {
2026-06-23T09:38:03.1018041Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1018152Z               "line": 629
2026-06-23T09:38:03.1018256Z             },
2026-06-23T09:38:03.1018360Z             {
2026-06-23T09:38:03.1018495Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1018599Z               "line": 640
2026-06-23T09:38:03.1018704Z             },
2026-06-23T09:38:03.1018805Z             {
2026-06-23T09:38:03.1019033Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.1019130Z               "line": 41
2026-06-23T09:38:03.1019243Z             },
2026-06-23T09:38:03.1019344Z             {
2026-06-23T09:38:03.1019482Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.1019587Z               "line": 62
2026-06-23T09:38:03.1019697Z             },
2026-06-23T09:38:03.1019802Z             {
2026-06-23T09:38:03.1019938Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.1020043Z               "line": 309
2026-06-23T09:38:03.1020142Z             },
2026-06-23T09:38:03.1020245Z             {
2026-06-23T09:38:03.1020370Z               "path": "crates/spt/src/rc.rs",
2026-06-23T09:38:03.1020480Z               "line": 738
2026-06-23T09:38:03.1020584Z             }
2026-06-23T09:38:03.1020675Z           ]
2026-06-23T09:38:03.1020770Z         },
2026-06-23T09:38:03.1020875Z         "int": {
2026-06-23T09:38:03.1020990Z           "complete": true,
2026-06-23T09:38:03.1021104Z           "evidence": [
2026-06-23T09:38:03.1021208Z             {
2026-06-23T09:38:03.1021362Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.1021572Z               "line": 922
2026-06-23T09:38:03.1021677Z             },
2026-06-23T09:38:03.1021776Z             {
2026-06-23T09:38:03.1021920Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.1022026Z               "line": 962
2026-06-23T09:38:03.1022124Z             },
2026-06-23T09:38:03.1022317Z             {
2026-06-23T09:38:03.1022462Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.1022577Z               "line": 1009
2026-06-23T09:38:03.1022672Z             },
2026-06-23T09:38:03.1022774Z             {
2026-06-23T09:38:03.1022917Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.1023028Z               "line": 1161
2026-06-23T09:38:03.1023136Z             }
2026-06-23T09:38:03.1023237Z           ]
2026-06-23T09:38:03.1023347Z         },
2026-06-23T09:38:03.1023446Z         "unit": {
2026-06-23T09:38:03.1023567Z           "complete": true,
2026-06-23T09:38:03.1023676Z           "evidence": [
2026-06-23T09:38:03.1023780Z             {
2026-06-23T09:38:03.1023934Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.1024038Z               "line": 175
2026-06-23T09:38:03.1024133Z             },
2026-06-23T09:38:03.1024240Z             {
2026-06-23T09:38:03.1024372Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-23T09:38:03.1024482Z               "line": 195
2026-06-23T09:38:03.1024587Z             }
2026-06-23T09:38:03.1024691Z           ]
2026-06-23T09:38:03.1024797Z         }
2026-06-23T09:38:03.1024897Z       }
2026-06-23T09:38:03.1024986Z     },
2026-06-23T09:38:03.1025078Z     {
2026-06-23T09:38:03.1025184Z       "id": "REQ-REACH-1",
2026-06-23T09:38:03.1025363Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-23T09:38:03.1025482Z       "requiredStages": [
2026-06-23T09:38:03.1025583Z         "impl",
2026-06-23T09:38:03.1025691Z         "unit",
2026-06-23T09:38:03.1025792Z         "int"
2026-06-23T09:38:03.1025897Z       ],
2026-06-23T09:38:03.1025996Z       "stages": {
2026-06-23T09:38:03.1026092Z         "doc": {
2026-06-23T09:38:03.1026202Z           "complete": false,
2026-06-23T09:38:03.1026301Z           "evidence": []
2026-06-23T09:38:03.1026402Z         },
2026-06-23T09:38:03.1026507Z         "impl": {
2026-06-23T09:38:03.1026621Z           "complete": true,
2026-06-23T09:38:03.1026731Z           "evidence": [
2026-06-23T09:38:03.1026841Z             {
2026-06-23T09:38:03.1026979Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1027085Z               "line": 629
2026-06-23T09:38:03.1027184Z             },
2026-06-23T09:38:03.1027289Z             {
2026-06-23T09:38:03.1027424Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T09:38:03.1027532Z               "line": 76
2026-06-23T09:38:03.1027641Z             },
2026-06-23T09:38:03.1027746Z             {
2026-06-23T09:38:03.1027872Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T09:38:03.1027981Z               "line": 222
2026-06-23T09:38:03.1028082Z             },
2026-06-23T09:38:03.1028187Z             {
2026-06-23T09:38:03.1028315Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T09:38:03.1028426Z               "line": 422
2026-06-23T09:38:03.1028530Z             },
2026-06-23T09:38:03.1028630Z             {
2026-06-23T09:38:03.1028769Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T09:38:03.1028873Z               "line": 529
2026-06-23T09:38:03.1029036Z             },
2026-06-23T09:38:03.1029141Z             {
2026-06-23T09:38:03.1029284Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T09:38:03.1029393Z               "line": 39
2026-06-23T09:38:03.1029493Z             },
2026-06-23T09:38:03.1029589Z             {
2026-06-23T09:38:03.1029722Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.1029827Z               "line": 301
2026-06-23T09:38:03.1029933Z             },
2026-06-23T09:38:03.1030137Z             {
2026-06-23T09:38:03.1030272Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-23T09:38:03.1030380Z               "line": 88
2026-06-23T09:38:03.1030479Z             },
2026-06-23T09:38:03.1030579Z             {
2026-06-23T09:38:03.1030716Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-23T09:38:03.1030824Z               "line": 98
2026-06-23T09:38:03.1031021Z             },
2026-06-23T09:38:03.1031129Z             {
2026-06-23T09:38:03.1031269Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1031383Z               "line": 233
2026-06-23T09:38:03.1031482Z             }
2026-06-23T09:38:03.1031589Z           ]
2026-06-23T09:38:03.1031689Z         },
2026-06-23T09:38:03.1031792Z         "int": {
2026-06-23T09:38:03.1031898Z           "complete": true,
2026-06-23T09:38:03.1032002Z           "evidence": [
2026-06-23T09:38:03.1032112Z             {
2026-06-23T09:38:03.1032261Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.1032370Z               "line": 415
2026-06-23T09:38:03.1032475Z             },
2026-06-23T09:38:03.1032576Z             {
2026-06-23T09:38:03.1032723Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.1032824Z               "line": 524
2026-06-23T09:38:03.1032929Z             },
2026-06-23T09:38:03.1033027Z             {
2026-06-23T09:38:03.1033179Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1033292Z               "line": 1000
2026-06-23T09:38:03.1033391Z             },
2026-06-23T09:38:03.1033492Z             {
2026-06-23T09:38:03.1033635Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1033739Z               "line": 1385
2026-06-23T09:38:03.1033841Z             }
2026-06-23T09:38:03.1033950Z           ]
2026-06-23T09:38:03.1034059Z         },
2026-06-23T09:38:03.1034156Z         "unit": {
2026-06-23T09:38:03.1034274Z           "complete": true,
2026-06-23T09:38:03.1034383Z           "evidence": [
2026-06-23T09:38:03.1034489Z             {
2026-06-23T09:38:03.1034622Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T09:38:03.1034722Z               "line": 639
2026-06-23T09:38:03.1034832Z             },
2026-06-23T09:38:03.1034932Z             {
2026-06-23T09:38:03.1035057Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-23T09:38:03.1035166Z               "line": 660
2026-06-23T09:38:03.1035270Z             },
2026-06-23T09:38:03.1035372Z             {
2026-06-23T09:38:03.1035518Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-23T09:38:03.1035618Z               "line": 777
2026-06-23T09:38:03.1035710Z             },
2026-06-23T09:38:03.1035805Z             {
2026-06-23T09:38:03.1035951Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-23T09:38:03.1036052Z               "line": 93
2026-06-23T09:38:03.1036152Z             },
2026-06-23T09:38:03.1036251Z             {
2026-06-23T09:38:03.1036396Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-23T09:38:03.1036509Z               "line": 224
2026-06-23T09:38:03.1036613Z             },
2026-06-23T09:38:03.1036715Z             {
2026-06-23T09:38:03.1036857Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T09:38:03.1036958Z               "line": 96
2026-06-23T09:38:03.1037063Z             },
2026-06-23T09:38:03.1037167Z             {
2026-06-23T09:38:03.1037297Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-23T09:38:03.1037406Z               "line": 146
2026-06-23T09:38:03.1037505Z             },
2026-06-23T09:38:03.1037611Z             {
2026-06-23T09:38:03.1037739Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.1037849Z               "line": 698
2026-06-23T09:38:03.1037950Z             },
2026-06-23T09:38:03.1038050Z             {
2026-06-23T09:38:03.1038172Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-23T09:38:03.1038282Z               "line": 118
2026-06-23T09:38:03.1038376Z             },
2026-06-23T09:38:03.1038556Z             {
2026-06-23T09:38:03.1038681Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-23T09:38:03.1038785Z               "line": 148
2026-06-23T09:38:03.1038885Z             },
2026-06-23T09:38:03.1039047Z             {
2026-06-23T09:38:03.1039190Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1039404Z               "line": 928
2026-06-23T09:38:03.1039510Z             }
2026-06-23T09:38:03.1039615Z           ]
2026-06-23T09:38:03.1039719Z         }
2026-06-23T09:38:03.1039815Z       }
2026-06-23T09:38:03.1039916Z     },
2026-06-23T09:38:03.1040011Z     {
2026-06-23T09:38:03.1040115Z       "id": "REQ-REACH-2",
2026-06-23T09:38:03.1040301Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-23T09:38:03.1040411Z       "requiredStages": [],
2026-06-23T09:38:03.1040508Z       "stages": {
2026-06-23T09:38:03.1040607Z         "doc": {
2026-06-23T09:38:03.1040716Z           "complete": false,
2026-06-23T09:38:03.1040832Z           "evidence": []
2026-06-23T09:38:03.1040936Z         },
2026-06-23T09:38:03.1041034Z         "impl": {
2026-06-23T09:38:03.1041149Z           "complete": false,
2026-06-23T09:38:03.1041253Z           "evidence": []
2026-06-23T09:38:03.1041352Z         },
2026-06-23T09:38:03.1041461Z         "int": {
2026-06-23T09:38:03.1041572Z           "complete": false,
2026-06-23T09:38:03.1041690Z           "evidence": []
2026-06-23T09:38:03.1041791Z         },
2026-06-23T09:38:03.1041891Z         "unit": {
2026-06-23T09:38:03.1042005Z           "complete": false,
2026-06-23T09:38:03.1042111Z           "evidence": []
2026-06-23T09:38:03.1042220Z         }
2026-06-23T09:38:03.1042320Z       }
2026-06-23T09:38:03.1042420Z     },
2026-06-23T09:38:03.1042511Z     {
2026-06-23T09:38:03.1042644Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-23T09:38:03.1046106Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-23T09:38:03.1046261Z       "requiredStages": [
2026-06-23T09:38:03.1046370Z         "doc",
2026-06-23T09:38:03.1046464Z         "impl",
2026-06-23T09:38:03.1046569Z         "unit",
2026-06-23T09:38:03.1046669Z         "int"
2026-06-23T09:38:03.1046773Z       ],
2026-06-23T09:38:03.1046878Z       "stages": {
2026-06-23T09:38:03.1046989Z         "doc": {
2026-06-23T09:38:03.1047107Z           "complete": true,
2026-06-23T09:38:03.1047208Z           "evidence": [
2026-06-23T09:38:03.1047317Z             {
2026-06-23T09:38:03.1047431Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1047542Z               "line": 385
2026-06-23T09:38:03.1047642Z             }
2026-06-23T09:38:03.1047741Z           ]
2026-06-23T09:38:03.1047847Z         },
2026-06-23T09:38:03.1047943Z         "impl": {
2026-06-23T09:38:03.1048061Z           "complete": true,
2026-06-23T09:38:03.1048172Z           "evidence": [
2026-06-23T09:38:03.1048267Z             {
2026-06-23T09:38:03.1048409Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.1048637Z               "line": 110
2026-06-23T09:38:03.1048732Z             }
2026-06-23T09:38:03.1048837Z           ]
2026-06-23T09:38:03.1048936Z         },
2026-06-23T09:38:03.1049116Z         "int": {
2026-06-23T09:38:03.1049231Z           "complete": true,
2026-06-23T09:38:03.1049340Z           "evidence": [
2026-06-23T09:38:03.1049536Z             {
2026-06-23T09:38:03.1049712Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-23T09:38:03.1049818Z               "line": 26
2026-06-23T09:38:03.1049927Z             }
2026-06-23T09:38:03.1050017Z           ]
2026-06-23T09:38:03.1050123Z         },
2026-06-23T09:38:03.1050228Z         "unit": {
2026-06-23T09:38:03.1050341Z           "complete": true,
2026-06-23T09:38:03.1050452Z           "evidence": [
2026-06-23T09:38:03.1050556Z             {
2026-06-23T09:38:03.1050699Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-23T09:38:03.1050800Z               "line": 320
2026-06-23T09:38:03.1050909Z             }
2026-06-23T09:38:03.1051009Z           ]
2026-06-23T09:38:03.1051115Z         }
2026-06-23T09:38:03.1051219Z       }
2026-06-23T09:38:03.1051319Z     },
2026-06-23T09:38:03.1051421Z     {
2026-06-23T09:38:03.1051533Z       "id": "REQ-REL-1",
2026-06-23T09:38:03.1051940Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-23T09:38:03.1052051Z       "requiredStages": [
2026-06-23T09:38:03.1052160Z         "doc",
2026-06-23T09:38:03.1052264Z         "impl"
2026-06-23T09:38:03.1052361Z       ],
2026-06-23T09:38:03.1052466Z       "stages": {
2026-06-23T09:38:03.1052565Z         "doc": {
2026-06-23T09:38:03.1052681Z           "complete": true,
2026-06-23T09:38:03.1052790Z           "evidence": [
2026-06-23T09:38:03.1052903Z             {
2026-06-23T09:38:03.1053152Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-23T09:38:03.1053242Z               "line": 3
2026-06-23T09:38:03.1053348Z             }
2026-06-23T09:38:03.1053452Z           ]
2026-06-23T09:38:03.1053552Z         },
2026-06-23T09:38:03.1053649Z         "impl": {
2026-06-23T09:38:03.1053766Z           "complete": true,
2026-06-23T09:38:03.1053871Z           "evidence": [
2026-06-23T09:38:03.1053973Z             {
2026-06-23T09:38:03.1054124Z               "path": ".github/workflows/docs-publish.yml",
2026-06-23T09:38:03.1054228Z               "line": 11
2026-06-23T09:38:03.1054338Z             },
2026-06-23T09:38:03.1054446Z             {
2026-06-23T09:38:03.1054569Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1054684Z               "line": 357
2026-06-23T09:38:03.1054784Z             }
2026-06-23T09:38:03.1054883Z           ]
2026-06-23T09:38:03.1054975Z         },
2026-06-23T09:38:03.1055080Z         "int": {
2026-06-23T09:38:03.1055189Z           "complete": false,
2026-06-23T09:38:03.1055299Z           "evidence": []
2026-06-23T09:38:03.1055404Z         },
2026-06-23T09:38:03.1055513Z         "unit": {
2026-06-23T09:38:03.1055628Z           "complete": false,
2026-06-23T09:38:03.1055733Z           "evidence": []
2026-06-23T09:38:03.1055838Z         }
2026-06-23T09:38:03.1055938Z       }
2026-06-23T09:38:03.1056029Z     },
2026-06-23T09:38:03.1056133Z     {
2026-06-23T09:38:03.1056244Z       "id": "REQ-REL-2",
2026-06-23T09:38:03.1056768Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-23T09:38:03.1056878Z       "requiredStages": [
2026-06-23T09:38:03.1056986Z         "impl",
2026-06-23T09:38:03.1057090Z         "int"
2026-06-23T09:38:03.1057196Z       ],
2026-06-23T09:38:03.1057306Z       "stages": {
2026-06-23T09:38:03.1057410Z         "doc": {
2026-06-23T09:38:03.1057516Z           "complete": true,
2026-06-23T09:38:03.1057621Z           "evidence": [
2026-06-23T09:38:03.1057724Z             {
2026-06-23T09:38:03.1057954Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-23T09:38:03.1058054Z               "line": 6
2026-06-23T09:38:03.1058150Z             }
2026-06-23T09:38:03.1058249Z           ]
2026-06-23T09:38:03.1058354Z         },
2026-06-23T09:38:03.1058460Z         "impl": {
2026-06-23T09:38:03.1058573Z           "complete": true,
2026-06-23T09:38:03.1058756Z           "evidence": [
2026-06-23T09:38:03.1058860Z             {
2026-06-23T09:38:03.1059071Z               "path": ".github/workflows/release.yml",
2026-06-23T09:38:03.1059175Z               "line": 16
2026-06-23T09:38:03.1059278Z             },
2026-06-23T09:38:03.1059369Z             {
2026-06-23T09:38:03.1059506Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1059610Z               "line": 444
2026-06-23T09:38:03.1059714Z             },
2026-06-23T09:38:03.1059816Z             {
2026-06-23T09:38:03.1059943Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1060044Z               "line": 518
2026-06-23T09:38:03.1060144Z             },
2026-06-23T09:38:03.1060258Z             {
2026-06-23T09:38:03.1060383Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1060492Z               "line": 680
2026-06-23T09:38:03.1060592Z             },
2026-06-23T09:38:03.1060688Z             {
2026-06-23T09:38:03.1060812Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1060921Z               "line": 812
2026-06-23T09:38:03.1061027Z             }
2026-06-23T09:38:03.1061131Z           ]
2026-06-23T09:38:03.1061240Z         },
2026-06-23T09:38:03.1061337Z         "int": {
2026-06-23T09:38:03.1061450Z           "complete": true,
2026-06-23T09:38:03.1061555Z           "evidence": [
2026-06-23T09:38:03.1061657Z             {
2026-06-23T09:38:03.1061803Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-23T09:38:03.1061919Z               "line": 13
2026-06-23T09:38:03.1062019Z             }
2026-06-23T09:38:03.1062122Z           ]
2026-06-23T09:38:03.1062216Z         },
2026-06-23T09:38:03.1062317Z         "unit": {
2026-06-23T09:38:03.1062429Z           "complete": false,
2026-06-23T09:38:03.1062543Z           "evidence": []
2026-06-23T09:38:03.1062649Z         }
2026-06-23T09:38:03.1062753Z       }
2026-06-23T09:38:03.1062858Z     },
2026-06-23T09:38:03.1062959Z     {
2026-06-23T09:38:03.1063073Z       "id": "REQ-REL-3",
2026-06-23T09:38:03.1063545Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-23T09:38:03.1063669Z       "requiredStages": [
2026-06-23T09:38:03.1063774Z         "impl",
2026-06-23T09:38:03.1063875Z         "unit"
2026-06-23T09:38:03.1063979Z       ],
2026-06-23T09:38:03.1064084Z       "stages": {
2026-06-23T09:38:03.1064185Z         "doc": {
2026-06-23T09:38:03.1064303Z           "complete": false,
2026-06-23T09:38:03.1064413Z           "evidence": []
2026-06-23T09:38:03.1064519Z         },
2026-06-23T09:38:03.1064632Z         "impl": {
2026-06-23T09:38:03.1064745Z           "complete": true,
2026-06-23T09:38:03.1064851Z           "evidence": [
2026-06-23T09:38:03.1064963Z             {
2026-06-23T09:38:03.1065110Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1065226Z               "line": 247
2026-06-23T09:38:03.1065335Z             },
2026-06-23T09:38:03.1065439Z             {
2026-06-23T09:38:03.1065578Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1065692Z               "line": 299
2026-06-23T09:38:03.1065788Z             },
2026-06-23T09:38:03.1065888Z             {
2026-06-23T09:38:03.1066025Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1066141Z               "line": 421
2026-06-23T09:38:03.1066241Z             },
2026-06-23T09:38:03.1066345Z             {
2026-06-23T09:38:03.1066475Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1066589Z               "line": 445
2026-06-23T09:38:03.1066804Z             },
2026-06-23T09:38:03.1066903Z             {
2026-06-23T09:38:03.1067037Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1067147Z               "line": 486
2026-06-23T09:38:03.1067251Z             }
2026-06-23T09:38:03.1067352Z           ]
2026-06-23T09:38:03.1067448Z         },
2026-06-23T09:38:03.1067546Z         "int": {
2026-06-23T09:38:03.1067756Z           "complete": false,
2026-06-23T09:38:03.1067870Z           "evidence": []
2026-06-23T09:38:03.1067965Z         },
2026-06-23T09:38:03.1068076Z         "unit": {
2026-06-23T09:38:03.1068185Z           "complete": true,
2026-06-23T09:38:03.1068299Z           "evidence": [
2026-06-23T09:38:03.1068400Z             {
2026-06-23T09:38:03.1068538Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1068642Z               "line": 1055
2026-06-23T09:38:03.1068748Z             },
2026-06-23T09:38:03.1068848Z             {
2026-06-23T09:38:03.1069058Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1069172Z               "line": 1114
2026-06-23T09:38:03.1069282Z             }
2026-06-23T09:38:03.1069382Z           ]
2026-06-23T09:38:03.1069481Z         }
2026-06-23T09:38:03.1069578Z       }
2026-06-23T09:38:03.1069674Z     },
2026-06-23T09:38:03.1069763Z     {
2026-06-23T09:38:03.1069890Z       "id": "REQ-RUN-MULTISUBNET-HOME",
2026-06-23T09:38:03.1072730Z       "title": "`spt endpoint run` resolves the home subnet at the skeleton-create step and pre-creates the skeleton perch carrying it, so the harness `bind` inherits home via establish_perch's immutable prior-branch (no hook change, no env injection). Resolution: sole-subnet auto; multi-subnet + no --subnet + NON-interactive terminal -> refuse early with MRU-ordered --subnet guidance (never the silent 25s online-timeout); multi-subnet + no --subnet + INTERACTIVE -> print proposed config (id/project/adapter[:profile]/home=MRU-default) + 'Ok to proceed? Y/n', n -> --subnet guidance; --subnet overrides + validates membership. MRU = ordered move-to-front LISTs at two levels (per-project + always-updated node-global fallback). Home stays IMMUTABLE (ADR-0010). Fixes the LATENT multi-subnet bringup gap (perri, not a regression — HOME_REFUSED established >=0.11.0; exposed by the node crossing 1->2 subnets). (ADR-0026)",
2026-06-23T09:38:03.1072858Z       "requiredStages": [
2026-06-23T09:38:03.1072957Z         "doc",
2026-06-23T09:38:03.1073065Z         "impl",
2026-06-23T09:38:03.1073156Z         "unit",
2026-06-23T09:38:03.1073267Z         "int"
2026-06-23T09:38:03.1073361Z       ],
2026-06-23T09:38:03.1073471Z       "stages": {
2026-06-23T09:38:03.1073571Z         "doc": {
2026-06-23T09:38:03.1073685Z           "complete": true,
2026-06-23T09:38:03.1073791Z           "evidence": [
2026-06-23T09:38:03.1073895Z             {
2026-06-23T09:38:03.1074120Z               "path": "docs/adr/0026-multi-subnet-home-at-endpoint-run-creation.md",
2026-06-23T09:38:03.1074214Z               "line": 3
2026-06-23T09:38:03.1074315Z             }
2026-06-23T09:38:03.1074416Z           ]
2026-06-23T09:38:03.1074506Z         },
2026-06-23T09:38:03.1074610Z         "impl": {
2026-06-23T09:38:03.1074721Z           "complete": true,
2026-06-23T09:38:03.1074821Z           "evidence": [
2026-06-23T09:38:03.1074925Z             {
2026-06-23T09:38:03.1075079Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1075187Z               "line": 16
2026-06-23T09:38:03.1075296Z             },
2026-06-23T09:38:03.1075396Z             {
2026-06-23T09:38:03.1075546Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1075655Z               "line": 42
2026-06-23T09:38:03.1075761Z             },
2026-06-23T09:38:03.1075871Z             {
2026-06-23T09:38:03.1076018Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1076119Z               "line": 50
2026-06-23T09:38:03.1076228Z             },
2026-06-23T09:38:03.1076329Z             {
2026-06-23T09:38:03.1076467Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1076682Z               "line": 1432
2026-06-23T09:38:03.1076791Z             },
2026-06-23T09:38:03.1076901Z             {
2026-06-23T09:38:03.1077030Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1077163Z               "line": 1515
2026-06-23T09:38:03.1077263Z             },
2026-06-23T09:38:03.1077463Z             {
2026-06-23T09:38:03.1077593Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1077707Z               "line": 1537
2026-06-23T09:38:03.1077811Z             },
2026-06-23T09:38:03.1077913Z             {
2026-06-23T09:38:03.1078041Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1078149Z               "line": 1557
2026-06-23T09:38:03.1078258Z             },
2026-06-23T09:38:03.1078360Z             {
2026-06-23T09:38:03.1078487Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1078607Z               "line": 1586
2026-06-23T09:38:03.1078702Z             },
2026-06-23T09:38:03.1078816Z             {
2026-06-23T09:38:03.1079027Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-23T09:38:03.1079135Z               "line": 274
2026-06-23T09:38:03.1079237Z             }
2026-06-23T09:38:03.1079342Z           ]
2026-06-23T09:38:03.1079446Z         },
2026-06-23T09:38:03.1079542Z         "int": {
2026-06-23T09:38:03.1079656Z           "complete": true,
2026-06-23T09:38:03.1079761Z           "evidence": [
2026-06-23T09:38:03.1079862Z             {
2026-06-23T09:38:03.1080036Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T09:38:03.1080152Z               "line": 198
2026-06-23T09:38:03.1080262Z             },
2026-06-23T09:38:03.1080361Z             {
2026-06-23T09:38:03.1080527Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T09:38:03.1080636Z               "line": 279
2026-06-23T09:38:03.1080735Z             },
2026-06-23T09:38:03.1080840Z             {
2026-06-23T09:38:03.1081007Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T09:38:03.1081116Z               "line": 285
2026-06-23T09:38:03.1081217Z             },
2026-06-23T09:38:03.1081322Z             {
2026-06-23T09:38:03.1081484Z               "path": "crates/spt/tests/multi_subnet_bringup_e2e.rs",
2026-06-23T09:38:03.1081593Z               "line": 296
2026-06-23T09:38:03.1081702Z             }
2026-06-23T09:38:03.1081808Z           ]
2026-06-23T09:38:03.1081912Z         },
2026-06-23T09:38:03.1082017Z         "unit": {
2026-06-23T09:38:03.1082118Z           "complete": true,
2026-06-23T09:38:03.1082223Z           "evidence": [
2026-06-23T09:38:03.1082332Z             {
2026-06-23T09:38:03.1082481Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1082584Z               "line": 115
2026-06-23T09:38:03.1082690Z             },
2026-06-23T09:38:03.1082791Z             {
2026-06-23T09:38:03.1082938Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1083044Z               "line": 137
2026-06-23T09:38:03.1083153Z             },
2026-06-23T09:38:03.1083256Z             {
2026-06-23T09:38:03.1083390Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1083498Z               "line": 156
2026-06-23T09:38:03.1083597Z             },
2026-06-23T09:38:03.1083698Z             {
2026-06-23T09:38:03.1083841Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1083959Z               "line": 170
2026-06-23T09:38:03.1084061Z             },
2026-06-23T09:38:03.1084170Z             {
2026-06-23T09:38:03.1084317Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1084418Z               "line": 189
2026-06-23T09:38:03.1084522Z             },
2026-06-23T09:38:03.1084622Z             {
2026-06-23T09:38:03.1084775Z               "path": "crates/spt-store/src/recent_home.rs",
2026-06-23T09:38:03.1084889Z               "line": 198
2026-06-23T09:38:03.1084981Z             },
2026-06-23T09:38:03.1085199Z             {
2026-06-23T09:38:03.1085329Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1085428Z               "line": 1690
2026-06-23T09:38:03.1085538Z             },
2026-06-23T09:38:03.1085649Z             {
2026-06-23T09:38:03.1085785Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1085894Z               "line": 1740
2026-06-23T09:38:03.1086106Z             }
2026-06-23T09:38:03.1086211Z           ]
2026-06-23T09:38:03.1086312Z         }
2026-06-23T09:38:03.1086412Z       }
2026-06-23T09:38:03.1089191Z     },
2026-06-23T09:38:03.1089319Z     {
2026-06-23T09:38:03.1089443Z       "id": "REQ-RUN-PICKER",
2026-06-23T09:38:03.1094305Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-23T09:38:03.1094486Z       "requiredStages": [
2026-06-23T09:38:03.1094592Z         "doc",
2026-06-23T09:38:03.1094701Z         "impl",
2026-06-23T09:38:03.1094810Z         "unit"
2026-06-23T09:38:03.1094911Z       ],
2026-06-23T09:38:03.1095006Z       "stages": {
2026-06-23T09:38:03.1095110Z         "doc": {
2026-06-23T09:38:03.1095226Z           "complete": true,
2026-06-23T09:38:03.1095330Z           "evidence": [
2026-06-23T09:38:03.1095435Z             {
2026-06-23T09:38:03.1095550Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1095659Z               "line": 362
2026-06-23T09:38:03.1095764Z             }
2026-06-23T09:38:03.1095861Z           ]
2026-06-23T09:38:03.1095965Z         },
2026-06-23T09:38:03.1096069Z         "impl": {
2026-06-23T09:38:03.1096190Z           "complete": true,
2026-06-23T09:38:03.1096299Z           "evidence": [
2026-06-23T09:38:03.1096407Z             {
2026-06-23T09:38:03.1096531Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1096639Z               "line": 1027
2026-06-23T09:38:03.1096738Z             },
2026-06-23T09:38:03.1096829Z             {
2026-06-23T09:38:03.1096959Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1097067Z               "line": 1037
2026-06-23T09:38:03.1097173Z             },
2026-06-23T09:38:03.1097273Z             {
2026-06-23T09:38:03.1097419Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.1097526Z               "line": 9
2026-06-23T09:38:03.1097630Z             },
2026-06-23T09:38:03.1097734Z             {
2026-06-23T09:38:03.1097869Z               "path": "crates/spt/src/picker/data.rs",
2026-06-23T09:38:03.1097973Z               "line": 67
2026-06-23T09:38:03.1098078Z             },
2026-06-23T09:38:03.1098179Z             {
2026-06-23T09:38:03.1098456Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-23T09:38:03.1098559Z               "line": 16
2026-06-23T09:38:03.1098665Z             },
2026-06-23T09:38:03.1098766Z             {
2026-06-23T09:38:03.1098902Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-23T09:38:03.1099090Z               "line": 254
2026-06-23T09:38:03.1099288Z             },
2026-06-23T09:38:03.1099383Z             {
2026-06-23T09:38:03.1099522Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1099626Z               "line": 11
2026-06-23T09:38:03.1099727Z             },
2026-06-23T09:38:03.1099833Z             {
2026-06-23T09:38:03.1099965Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1100066Z               "line": 126
2026-06-23T09:38:03.1100166Z             },
2026-06-23T09:38:03.1100270Z             {
2026-06-23T09:38:03.1100409Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1100509Z               "line": 582
2026-06-23T09:38:03.1100618Z             },
2026-06-23T09:38:03.1100720Z             {
2026-06-23T09:38:03.1100852Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1100963Z               "line": 663
2026-06-23T09:38:03.1101077Z             },
2026-06-23T09:38:03.1101205Z             {
2026-06-23T09:38:03.1101336Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1101443Z               "line": 722
2026-06-23T09:38:03.1101547Z             },
2026-06-23T09:38:03.1101643Z             {
2026-06-23T09:38:03.1101774Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1101873Z               "line": 775
2026-06-23T09:38:03.1101979Z             },
2026-06-23T09:38:03.1102075Z             {
2026-06-23T09:38:03.1102217Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1102318Z               "line": 813
2026-06-23T09:38:03.1102422Z             },
2026-06-23T09:38:03.1102527Z             {
2026-06-23T09:38:03.1102657Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:03.1102765Z               "line": 8
2026-06-23T09:38:03.1102866Z             }
2026-06-23T09:38:03.1102971Z           ]
2026-06-23T09:38:03.1103071Z         },
2026-06-23T09:38:03.1103176Z         "int": {
2026-06-23T09:38:03.1103281Z           "complete": false,
2026-06-23T09:38:03.1103391Z           "evidence": []
2026-06-23T09:38:03.1103490Z         },
2026-06-23T09:38:03.1103596Z         "unit": {
2026-06-23T09:38:03.1103709Z           "complete": true,
2026-06-23T09:38:03.1103815Z           "evidence": [
2026-06-23T09:38:03.1103916Z             {
2026-06-23T09:38:03.1104038Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1104149Z               "line": 9015
2026-06-23T09:38:03.1104250Z             },
2026-06-23T09:38:03.1104349Z             {
2026-06-23T09:38:03.1104476Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1104590Z               "line": 9026
2026-06-23T09:38:03.1104684Z             },
2026-06-23T09:38:03.1104793Z             {
2026-06-23T09:38:03.1104918Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1105018Z               "line": 908
2026-06-23T09:38:03.1105117Z             },
2026-06-23T09:38:03.1105219Z             {
2026-06-23T09:38:03.1105347Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1105457Z               "line": 995
2026-06-23T09:38:03.1105562Z             },
2026-06-23T09:38:03.1105657Z             {
2026-06-23T09:38:03.1105781Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1105891Z               "line": 1046
2026-06-23T09:38:03.1106000Z             },
2026-06-23T09:38:03.1106101Z             {
2026-06-23T09:38:03.1106234Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1106343Z               "line": 1063
2026-06-23T09:38:03.1106444Z             },
2026-06-23T09:38:03.1106549Z             {
2026-06-23T09:38:03.1106682Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1106986Z               "line": 1072
2026-06-23T09:38:03.1107081Z             },
2026-06-23T09:38:03.1107176Z             {
2026-06-23T09:38:03.1107303Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1107413Z               "line": 1083
2026-06-23T09:38:03.1107514Z             },
2026-06-23T09:38:03.1107680Z             {
2026-06-23T09:38:03.1107818Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1107932Z               "line": 1105
2026-06-23T09:38:03.1108038Z             },
2026-06-23T09:38:03.1108138Z             {
2026-06-23T09:38:03.1108266Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1108367Z               "line": 1124
2026-06-23T09:38:03.1108466Z             },
2026-06-23T09:38:03.1108571Z             {
2026-06-23T09:38:03.1108701Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1108815Z               "line": 1174
2026-06-23T09:38:03.1108925Z             },
2026-06-23T09:38:03.1109115Z             {
2026-06-23T09:38:03.1109249Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1109355Z               "line": 1203
2026-06-23T09:38:03.1109453Z             },
2026-06-23T09:38:03.1109554Z             {
2026-06-23T09:38:03.1109694Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1109801Z               "line": 1216
2026-06-23T09:38:03.1109900Z             },
2026-06-23T09:38:03.1110002Z             {
2026-06-23T09:38:03.1110139Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1110244Z               "line": 1282
2026-06-23T09:38:03.1110350Z             },
2026-06-23T09:38:03.1110453Z             {
2026-06-23T09:38:03.1110588Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1110693Z               "line": 1323
2026-06-23T09:38:03.1110797Z             },
2026-06-23T09:38:03.1110898Z             {
2026-06-23T09:38:03.1111040Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1111140Z               "line": 1339
2026-06-23T09:38:03.1111242Z             },
2026-06-23T09:38:03.1111345Z             {
2026-06-23T09:38:03.1111484Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:03.1111595Z               "line": 524
2026-06-23T09:38:03.1111688Z             },
2026-06-23T09:38:03.1111789Z             {
2026-06-23T09:38:03.1111928Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:03.1112027Z               "line": 539
2026-06-23T09:38:03.1112122Z             },
2026-06-23T09:38:03.1112222Z             {
2026-06-23T09:38:03.1112358Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:03.1112457Z               "line": 557
2026-06-23T09:38:03.1112563Z             },
2026-06-23T09:38:03.1112668Z             {
2026-06-23T09:38:03.1112797Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:03.1112907Z               "line": 579
2026-06-23T09:38:03.1113006Z             },
2026-06-23T09:38:03.1113111Z             {
2026-06-23T09:38:03.1113245Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:03.1113359Z               "line": 589
2026-06-23T09:38:03.1113460Z             },
2026-06-23T09:38:03.1113550Z             {
2026-06-23T09:38:03.1113678Z               "path": "crates/spt/src/picker/view.rs",
2026-06-23T09:38:03.1113789Z               "line": 615
2026-06-23T09:38:03.1113893Z             }
2026-06-23T09:38:03.1113993Z           ]
2026-06-23T09:38:03.1114099Z         }
2026-06-23T09:38:03.1114199Z       }
2026-06-23T09:38:03.1114284Z     },
2026-06-23T09:38:03.1114385Z     {
2026-06-23T09:38:03.1114495Z       "id": "REQ-RUN-SHORTCUT",
2026-06-23T09:38:03.1119247Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-23T09:38:03.1119610Z       "requiredStages": [
2026-06-23T09:38:03.1119718Z         "doc",
2026-06-23T09:38:03.1119819Z         "impl",
2026-06-23T09:38:03.1119925Z         "unit"
2026-06-23T09:38:03.1120023Z       ],
2026-06-23T09:38:03.1120124Z       "stages": {
2026-06-23T09:38:03.1120230Z         "doc": {
2026-06-23T09:38:03.1120342Z           "complete": true,
2026-06-23T09:38:03.1120442Z           "evidence": [
2026-06-23T09:38:03.1120542Z             {
2026-06-23T09:38:03.1120662Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1120771Z               "line": 403
2026-06-23T09:38:03.1120877Z             }
2026-06-23T09:38:03.1120981Z           ]
2026-06-23T09:38:03.1121085Z         },
2026-06-23T09:38:03.1121192Z         "impl": {
2026-06-23T09:38:03.1121292Z           "complete": true,
2026-06-23T09:38:03.1121395Z           "evidence": [
2026-06-23T09:38:03.1121497Z             {
2026-06-23T09:38:03.1121639Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T09:38:03.1121748Z               "line": 39
2026-06-23T09:38:03.1121850Z             },
2026-06-23T09:38:03.1121944Z             {
2026-06-23T09:38:03.1122083Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T09:38:03.1122193Z               "line": 79
2026-06-23T09:38:03.1122287Z             },
2026-06-23T09:38:03.1122387Z             {
2026-06-23T09:38:03.1122535Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T09:38:03.1122635Z               "line": 162
2026-06-23T09:38:03.1122739Z             }
2026-06-23T09:38:03.1122839Z           ]
2026-06-23T09:38:03.1122942Z         },
2026-06-23T09:38:03.1123047Z         "int": {
2026-06-23T09:38:03.1123152Z           "complete": false,
2026-06-23T09:38:03.1123252Z           "evidence": []
2026-06-23T09:38:03.1123352Z         },
2026-06-23T09:38:03.1123462Z         "unit": {
2026-06-23T09:38:03.1123562Z           "complete": true,
2026-06-23T09:38:03.1123671Z           "evidence": [
2026-06-23T09:38:03.1123767Z             {
2026-06-23T09:38:03.1123900Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T09:38:03.1124010Z               "line": 206
2026-06-23T09:38:03.1124110Z             },
2026-06-23T09:38:03.1124215Z             {
2026-06-23T09:38:03.1124354Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T09:38:03.1124463Z               "line": 222
2026-06-23T09:38:03.1124563Z             },
2026-06-23T09:38:03.1124664Z             {
2026-06-23T09:38:03.1124801Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T09:38:03.1124906Z               "line": 238
2026-06-23T09:38:03.1125003Z             },
2026-06-23T09:38:03.1125097Z             {
2026-06-23T09:38:03.1125313Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T09:38:03.1125421Z               "line": 251
2026-06-23T09:38:03.1125520Z             },
2026-06-23T09:38:03.1125620Z             {
2026-06-23T09:38:03.1125752Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-23T09:38:03.1125861Z               "line": 258
2026-06-23T09:38:03.1126024Z             }
2026-06-23T09:38:03.1126124Z           ]
2026-06-23T09:38:03.1126228Z         }
2026-06-23T09:38:03.1126325Z       }
2026-06-23T09:38:03.1126415Z     },
2026-06-23T09:38:03.1126514Z     {
2026-06-23T09:38:03.1126634Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-23T09:38:03.1126834Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-23T09:38:03.1126940Z       "requiredStages": [
2026-06-23T09:38:03.1127049Z         "impl",
2026-06-23T09:38:03.1127149Z         "unit"
2026-06-23T09:38:03.1127255Z       ],
2026-06-23T09:38:03.1127359Z       "stages": {
2026-06-23T09:38:03.1127459Z         "doc": {
2026-06-23T09:38:03.1127570Z           "complete": false,
2026-06-23T09:38:03.1127678Z           "evidence": []
2026-06-23T09:38:03.1127788Z         },
2026-06-23T09:38:03.1127890Z         "impl": {
2026-06-23T09:38:03.1128002Z           "complete": true,
2026-06-23T09:38:03.1128111Z           "evidence": [
2026-06-23T09:38:03.1128216Z             {
2026-06-23T09:38:03.1128362Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1128466Z               "line": 18
2026-06-23T09:38:03.1128572Z             },
2026-06-23T09:38:03.1128667Z             {
2026-06-23T09:38:03.1128804Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1128916Z               "line": 35
2026-06-23T09:38:03.1129096Z             },
2026-06-23T09:38:03.1129197Z             {
2026-06-23T09:38:03.1129325Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1129425Z               "line": 72
2026-06-23T09:38:03.1129526Z             }
2026-06-23T09:38:03.1129625Z           ]
2026-06-23T09:38:03.1129715Z         },
2026-06-23T09:38:03.1129817Z         "int": {
2026-06-23T09:38:03.1129916Z           "complete": false,
2026-06-23T09:38:03.1130025Z           "evidence": []
2026-06-23T09:38:03.1130131Z         },
2026-06-23T09:38:03.1130240Z         "unit": {
2026-06-23T09:38:03.1130354Z           "complete": true,
2026-06-23T09:38:03.1130456Z           "evidence": [
2026-06-23T09:38:03.1130559Z             {
2026-06-23T09:38:03.1130694Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1130794Z               "line": 239
2026-06-23T09:38:03.1130902Z             },
2026-06-23T09:38:03.1131002Z             {
2026-06-23T09:38:03.1131132Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1131241Z               "line": 256
2026-06-23T09:38:03.1131345Z             },
2026-06-23T09:38:03.1131447Z             {
2026-06-23T09:38:03.1131579Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1131699Z               "line": 265
2026-06-23T09:38:03.1131794Z             }
2026-06-23T09:38:03.1131889Z           ]
2026-06-23T09:38:03.1131989Z         }
2026-06-23T09:38:03.1132090Z       }
2026-06-23T09:38:03.1132175Z     },
2026-06-23T09:38:03.1132270Z     {
2026-06-23T09:38:03.1132396Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-23T09:38:03.1132556Z       "title": "Hostable endpoint-types capability declaration",
2026-06-23T09:38:03.1132681Z       "requiredStages": [
2026-06-23T09:38:03.1132781Z         "impl",
2026-06-23T09:38:03.1132885Z         "unit"
2026-06-23T09:38:03.1132987Z       ],
2026-06-23T09:38:03.1133096Z       "stages": {
2026-06-23T09:38:03.1133199Z         "doc": {
2026-06-23T09:38:03.1133309Z           "complete": false,
2026-06-23T09:38:03.1133413Z           "evidence": []
2026-06-23T09:38:03.1133512Z         },
2026-06-23T09:38:03.1133626Z         "impl": {
2026-06-23T09:38:03.1133737Z           "complete": true,
2026-06-23T09:38:03.1133845Z           "evidence": [
2026-06-23T09:38:03.1134051Z             {
2026-06-23T09:38:03.1134198Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1134304Z               "line": 598
2026-06-23T09:38:03.1134404Z             }
2026-06-23T09:38:03.1134508Z           ]
2026-06-23T09:38:03.1134609Z         },
2026-06-23T09:38:03.1134723Z         "int": {
2026-06-23T09:38:03.1134837Z           "complete": false,
2026-06-23T09:38:03.1135037Z           "evidence": []
2026-06-23T09:38:03.1135142Z         },
2026-06-23T09:38:03.1135239Z         "unit": {
2026-06-23T09:38:03.1135357Z           "complete": true,
2026-06-23T09:38:03.1135466Z           "evidence": [
2026-06-23T09:38:03.1135568Z             {
2026-06-23T09:38:03.1135714Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1135825Z               "line": 967
2026-06-23T09:38:03.1135930Z             }
2026-06-23T09:38:03.1136033Z           ]
2026-06-23T09:38:03.1136142Z         }
2026-06-23T09:38:03.1136243Z       }
2026-06-23T09:38:03.1136336Z     },
2026-06-23T09:38:03.1136435Z     {
2026-06-23T09:38:03.1136556Z       "id": "REQ-SEAM-HISTORY",
2026-06-23T09:38:03.1136759Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-23T09:38:03.1136875Z       "requiredStages": [
2026-06-23T09:38:03.1136989Z         "impl",
2026-06-23T09:38:03.1137088Z         "unit",
2026-06-23T09:38:03.1137190Z         "int"
2026-06-23T09:38:03.1137299Z       ],
2026-06-23T09:38:03.1137408Z       "stages": {
2026-06-23T09:38:03.1137510Z         "doc": {
2026-06-23T09:38:03.1137623Z           "complete": false,
2026-06-23T09:38:03.1137733Z           "evidence": []
2026-06-23T09:38:03.1137834Z         },
2026-06-23T09:38:03.1137942Z         "impl": {
2026-06-23T09:38:03.1138052Z           "complete": true,
2026-06-23T09:38:03.1138149Z           "evidence": [
2026-06-23T09:38:03.1138252Z             {
2026-06-23T09:38:03.1138387Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T09:38:03.1138492Z               "line": 24
2026-06-23T09:38:03.1138596Z             },
2026-06-23T09:38:03.1138690Z             {
2026-06-23T09:38:03.1138833Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T09:38:03.1139012Z               "line": 22
2026-06-23T09:38:03.1139112Z             }
2026-06-23T09:38:03.1139213Z           ]
2026-06-23T09:38:03.1139321Z         },
2026-06-23T09:38:03.1139423Z         "int": {
2026-06-23T09:38:03.1139542Z           "complete": true,
2026-06-23T09:38:03.1139646Z           "evidence": [
2026-06-23T09:38:03.1139752Z             {
2026-06-23T09:38:03.1139899Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:03.1140004Z               "line": 260
2026-06-23T09:38:03.1140109Z             }
2026-06-23T09:38:03.1140209Z           ]
2026-06-23T09:38:03.1140314Z         },
2026-06-23T09:38:03.1140424Z         "unit": {
2026-06-23T09:38:03.1140524Z           "complete": true,
2026-06-23T09:38:03.1140629Z           "evidence": [
2026-06-23T09:38:03.1140730Z             {
2026-06-23T09:38:03.1140858Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T09:38:03.1140968Z               "line": 171
2026-06-23T09:38:03.1141073Z             },
2026-06-23T09:38:03.1141182Z             {
2026-06-23T09:38:03.1141312Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T09:38:03.1141420Z               "line": 200
2026-06-23T09:38:03.1141519Z             },
2026-06-23T09:38:03.1141624Z             {
2026-06-23T09:38:03.1141749Z               "path": "crates/spt-live/src/echo.rs",
2026-06-23T09:38:03.1141857Z               "line": 220
2026-06-23T09:38:03.1141968Z             },
2026-06-23T09:38:03.1142068Z             {
2026-06-23T09:38:03.1142215Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T09:38:03.1142312Z               "line": 199
2026-06-23T09:38:03.1142417Z             },
2026-06-23T09:38:03.1142510Z             {
2026-06-23T09:38:03.1142645Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T09:38:03.1142760Z               "line": 219
2026-06-23T09:38:03.1142960Z             },
2026-06-23T09:38:03.1143064Z             {
2026-06-23T09:38:03.1143198Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T09:38:03.1143308Z               "line": 244
2026-06-23T09:38:03.1143412Z             },
2026-06-23T09:38:03.1143522Z             {
2026-06-23T09:38:03.1143660Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T09:38:03.1143860Z               "line": 276
2026-06-23T09:38:03.1143959Z             },
2026-06-23T09:38:03.1144057Z             {
2026-06-23T09:38:03.1144200Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T09:38:03.1144302Z               "line": 297
2026-06-23T09:38:03.1144395Z             },
2026-06-23T09:38:03.1144501Z             {
2026-06-23T09:38:03.1144630Z               "path": "crates/spt-live/src/history.rs",
2026-06-23T09:38:03.1144739Z               "line": 324
2026-06-23T09:38:03.1144840Z             }
2026-06-23T09:38:03.1144944Z           ]
2026-06-23T09:38:03.1145044Z         }
2026-06-23T09:38:03.1145155Z       }
2026-06-23T09:38:03.1145254Z     },
2026-06-23T09:38:03.1145358Z     {
2026-06-23T09:38:03.1145474Z       "id": "REQ-SEAM-INJECT",
2026-06-23T09:38:03.1145655Z       "title": "inject-input methods configurable per activity-state",
2026-06-23T09:38:03.1145775Z       "requiredStages": [
2026-06-23T09:38:03.1145879Z         "impl",
2026-06-23T09:38:03.1145993Z         "unit"
2026-06-23T09:38:03.1146090Z       ],
2026-06-23T09:38:03.1146194Z       "stages": {
2026-06-23T09:38:03.1146294Z         "doc": {
2026-06-23T09:38:03.1146400Z           "complete": false,
2026-06-23T09:38:03.1146519Z           "evidence": []
2026-06-23T09:38:03.1146617Z         },
2026-06-23T09:38:03.1146727Z         "impl": {
2026-06-23T09:38:03.1146841Z           "complete": true,
2026-06-23T09:38:03.1146948Z           "evidence": [
2026-06-23T09:38:03.1147049Z             {
2026-06-23T09:38:03.1147183Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1147287Z               "line": 19
2026-06-23T09:38:03.1147392Z             },
2026-06-23T09:38:03.1147497Z             {
2026-06-23T09:38:03.1147640Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1147746Z               "line": 111
2026-06-23T09:38:03.1147846Z             }
2026-06-23T09:38:03.1147945Z           ]
2026-06-23T09:38:03.1148051Z         },
2026-06-23T09:38:03.1148150Z         "int": {
2026-06-23T09:38:03.1148269Z           "complete": false,
2026-06-23T09:38:03.1148380Z           "evidence": []
2026-06-23T09:38:03.1148484Z         },
2026-06-23T09:38:03.1148584Z         "unit": {
2026-06-23T09:38:03.1148685Z           "complete": true,
2026-06-23T09:38:03.1148789Z           "evidence": [
2026-06-23T09:38:03.1148889Z             {
2026-06-23T09:38:03.1149094Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1149207Z               "line": 345
2026-06-23T09:38:03.1149307Z             },
2026-06-23T09:38:03.1149407Z             {
2026-06-23T09:38:03.1149529Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1149644Z               "line": 365
2026-06-23T09:38:03.1149745Z             }
2026-06-23T09:38:03.1149854Z           ]
2026-06-23T09:38:03.1149959Z         }
2026-06-23T09:38:03.1150059Z       }
2026-06-23T09:38:03.1150149Z     },
2026-06-23T09:38:03.1150250Z     {
2026-06-23T09:38:03.1150374Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-23T09:38:03.1150525Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-23T09:38:03.1150641Z       "requiredStages": [
2026-06-23T09:38:03.1150745Z         "impl",
2026-06-23T09:38:03.1150850Z         "unit"
2026-06-23T09:38:03.1150951Z       ],
2026-06-23T09:38:03.1151055Z       "stages": {
2026-06-23T09:38:03.1151155Z         "doc": {
2026-06-23T09:38:03.1151262Z           "complete": false,
2026-06-23T09:38:03.1151365Z           "evidence": []
2026-06-23T09:38:03.1151470Z         },
2026-06-23T09:38:03.1151567Z         "impl": {
2026-06-23T09:38:03.1151679Z           "complete": true,
2026-06-23T09:38:03.1151891Z           "evidence": [
2026-06-23T09:38:03.1151999Z             {
2026-06-23T09:38:03.1152136Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1152247Z               "line": 18
2026-06-23T09:38:03.1152351Z             },
2026-06-23T09:38:03.1152451Z             {
2026-06-23T09:38:03.1152581Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1152809Z               "line": 431
2026-06-23T09:38:03.1152914Z             }
2026-06-23T09:38:03.1153014Z           ]
2026-06-23T09:38:03.1153119Z         },
2026-06-23T09:38:03.1153229Z         "int": {
2026-06-23T09:38:03.1153338Z           "complete": false,
2026-06-23T09:38:03.1153448Z           "evidence": []
2026-06-23T09:38:03.1153549Z         },
2026-06-23T09:38:03.1153653Z         "unit": {
2026-06-23T09:38:03.1153768Z           "complete": true,
2026-06-23T09:38:03.1153883Z           "evidence": [
2026-06-23T09:38:03.1153987Z             {
2026-06-23T09:38:03.1154117Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1154234Z               "line": 881
2026-06-23T09:38:03.1154329Z             },
2026-06-23T09:38:03.1154439Z             {
2026-06-23T09:38:03.1154571Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1154670Z               "line": 891
2026-06-23T09:38:03.1154770Z             }
2026-06-23T09:38:03.1154876Z           ]
2026-06-23T09:38:03.1154975Z         }
2026-06-23T09:38:03.1155071Z       }
2026-06-23T09:38:03.1155171Z     },
2026-06-23T09:38:03.1155266Z     {
2026-06-23T09:38:03.1155386Z       "id": "REQ-SEAM-PSYCHE",
2026-06-23T09:38:03.1155552Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-23T09:38:03.1155662Z       "requiredStages": [
2026-06-23T09:38:03.1155768Z         "impl",
2026-06-23T09:38:03.1155872Z         "unit",
2026-06-23T09:38:03.1155981Z         "int"
2026-06-23T09:38:03.1156068Z       ],
2026-06-23T09:38:03.1156172Z       "stages": {
2026-06-23T09:38:03.1156277Z         "doc": {
2026-06-23T09:38:03.1156388Z           "complete": false,
2026-06-23T09:38:03.1156496Z           "evidence": []
2026-06-23T09:38:03.1156591Z         },
2026-06-23T09:38:03.1156698Z         "impl": {
2026-06-23T09:38:03.1156806Z           "complete": true,
2026-06-23T09:38:03.1156911Z           "evidence": [
2026-06-23T09:38:03.1157022Z             {
2026-06-23T09:38:03.1157153Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T09:38:03.1157267Z               "line": 19
2026-06-23T09:38:03.1157373Z             },
2026-06-23T09:38:03.1157480Z             {
2026-06-23T09:38:03.1157614Z               "path": "crates/spt/src/api/live.rs",
2026-06-23T09:38:03.1157733Z               "line": 12
2026-06-23T09:38:03.1157842Z             },
2026-06-23T09:38:03.1157943Z             {
2026-06-23T09:38:03.1158077Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1158185Z               "line": 301
2026-06-23T09:38:03.1158291Z             }
2026-06-23T09:38:03.1158391Z           ]
2026-06-23T09:38:03.1175530Z         },
2026-06-23T09:38:03.1175630Z         "int": {
2026-06-23T09:38:03.1175743Z           "complete": true,
2026-06-23T09:38:03.1175852Z           "evidence": [
2026-06-23T09:38:03.1175958Z             {
2026-06-23T09:38:03.1176114Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:03.1176225Z               "line": 259
2026-06-23T09:38:03.1176334Z             }
2026-06-23T09:38:03.1176428Z           ]
2026-06-23T09:38:03.1176530Z         },
2026-06-23T09:38:03.1176639Z         "unit": {
2026-06-23T09:38:03.1176748Z           "complete": true,
2026-06-23T09:38:03.1176850Z           "evidence": [
2026-06-23T09:38:03.1176949Z             {
2026-06-23T09:38:03.1177102Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T09:38:03.1177217Z               "line": 195
2026-06-23T09:38:03.1177326Z             },
2026-06-23T09:38:03.1177445Z             {
2026-06-23T09:38:03.1177583Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T09:38:03.1178119Z               "line": 202
2026-06-23T09:38:03.1178359Z             },
2026-06-23T09:38:03.1178586Z             {
2026-06-23T09:38:03.1178825Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-23T09:38:03.1179197Z               "line": 225
2026-06-23T09:38:03.1179431Z             },
2026-06-23T09:38:03.1179634Z             {
2026-06-23T09:38:03.1179969Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-23T09:38:03.1180254Z               "line": 106
2026-06-23T09:38:03.1180474Z             },
2026-06-23T09:38:03.1180680Z             {
2026-06-23T09:38:03.1180912Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-23T09:38:03.1181171Z               "line": 137
2026-06-23T09:38:03.1181387Z             },
2026-06-23T09:38:03.1181586Z             {
2026-06-23T09:38:03.1181806Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-23T09:38:03.1182078Z               "line": 161
2026-06-23T09:38:03.1182293Z             }
2026-06-23T09:38:03.1182487Z           ]
2026-06-23T09:38:03.1182693Z         }
2026-06-23T09:38:03.1182894Z       }
2026-06-23T09:38:03.1183094Z     },
2026-06-23T09:38:03.1183290Z     {
2026-06-23T09:38:03.1183499Z       "id": "REQ-SEAM-RESUME",
2026-06-23T09:38:03.1183855Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-23T09:38:03.1184213Z       "requiredStages": [
2026-06-23T09:38:03.1184455Z         "impl",
2026-06-23T09:38:03.1184657Z         "unit"
2026-06-23T09:38:03.1184858Z       ],
2026-06-23T09:38:03.1185056Z       "stages": {
2026-06-23T09:38:03.1185266Z         "doc": {
2026-06-23T09:38:03.1185473Z           "complete": false,
2026-06-23T09:38:03.1185720Z           "evidence": []
2026-06-23T09:38:03.1185938Z         },
2026-06-23T09:38:03.1186134Z         "impl": {
2026-06-23T09:38:03.1186359Z           "complete": true,
2026-06-23T09:38:03.1186589Z           "evidence": [
2026-06-23T09:38:03.1186809Z             {
2026-06-23T09:38:03.1187066Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T09:38:03.1187347Z               "line": 19
2026-06-23T09:38:03.1187566Z             }
2026-06-23T09:38:03.1187758Z           ]
2026-06-23T09:38:03.1187948Z         },
2026-06-23T09:38:03.1188143Z         "int": {
2026-06-23T09:38:03.1188369Z           "complete": false,
2026-06-23T09:38:03.1193202Z           "evidence": []
2026-06-23T09:38:03.1193449Z         },
2026-06-23T09:38:03.1193663Z         "unit": {
2026-06-23T09:38:03.1193897Z           "complete": true,
2026-06-23T09:38:03.1194131Z           "evidence": [
2026-06-23T09:38:03.1194344Z             {
2026-06-23T09:38:03.1194620Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T09:38:03.1194921Z               "line": 201
2026-06-23T09:38:03.1195141Z             },
2026-06-23T09:38:03.1195331Z             {
2026-06-23T09:38:03.1195583Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T09:38:03.1195855Z               "line": 223
2026-06-23T09:38:03.1196081Z             },
2026-06-23T09:38:03.1196275Z             {
2026-06-23T09:38:03.1196541Z               "path": "crates/spt-live/src/resume.rs",
2026-06-23T09:38:03.1196834Z               "line": 244
2026-06-23T09:38:03.1197049Z             }
2026-06-23T09:38:03.1197253Z           ]
2026-06-23T09:38:03.1197445Z         }
2026-06-23T09:38:03.1197656Z       }
2026-06-23T09:38:03.1197845Z     },
2026-06-23T09:38:03.1198041Z     {
2026-06-23T09:38:03.1198285Z       "id": "REQ-SEAM-SPAWN",
2026-06-23T09:38:03.1198556Z       "title": "spawn-session seam",
2026-06-23T09:38:03.1198842Z       "requiredStages": [
2026-06-23T09:38:03.1199171Z         "impl",
2026-06-23T09:38:03.1199380Z         "unit"
2026-06-23T09:38:03.1199580Z       ],
2026-06-23T09:38:03.1199777Z       "stages": {
2026-06-23T09:38:03.1199983Z         "doc": {
2026-06-23T09:38:03.1200193Z           "complete": false,
2026-06-23T09:38:03.1200435Z           "evidence": []
2026-06-23T09:38:03.1200660Z         },
2026-06-23T09:38:03.1200856Z         "impl": {
2026-06-23T09:38:03.1201074Z           "complete": true,
2026-06-23T09:38:03.1201486Z           "evidence": [
2026-06-23T09:38:03.1201709Z             {
2026-06-23T09:38:03.1201966Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.1202273Z               "line": 20
2026-06-23T09:38:03.1202488Z             }
2026-06-23T09:38:03.1202678Z           ]
2026-06-23T09:38:03.1202874Z         },
2026-06-23T09:38:03.1203184Z         "int": {
2026-06-23T09:38:03.1203409Z           "complete": false,
2026-06-23T09:38:03.1203636Z           "evidence": []
2026-06-23T09:38:03.1203851Z         },
2026-06-23T09:38:03.1204062Z         "unit": {
2026-06-23T09:38:03.1204295Z           "complete": true,
2026-06-23T09:38:03.1204523Z           "evidence": [
2026-06-23T09:38:03.1204739Z             {
2026-06-23T09:38:03.1204985Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.1205271Z               "line": 611
2026-06-23T09:38:03.1205481Z             },
2026-06-23T09:38:03.1205673Z             {
2026-06-23T09:38:03.1205910Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.1206220Z               "line": 618
2026-06-23T09:38:03.1206463Z             },
2026-06-23T09:38:03.1206664Z             {
2026-06-23T09:38:03.1206903Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.1207181Z               "line": 724
2026-06-23T09:38:03.1207404Z             },
2026-06-23T09:38:03.1207595Z             {
2026-06-23T09:38:03.1207833Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.1208109Z               "line": 730
2026-06-23T09:38:03.1208325Z             },
2026-06-23T09:38:03.1208521Z             {
2026-06-23T09:38:03.1208753Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.1209131Z               "line": 755
2026-06-23T09:38:03.1209359Z             },
2026-06-23T09:38:03.1209555Z             {
2026-06-23T09:38:03.1209780Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-23T09:38:03.1210058Z               "line": 792
2026-06-23T09:38:03.1210285Z             }
2026-06-23T09:38:03.1210477Z           ]
2026-06-23T09:38:03.1210671Z         }
2026-06-23T09:38:03.1210863Z       }
2026-06-23T09:38:03.1211053Z     },
2026-06-23T09:38:03.1211239Z     {
2026-06-23T09:38:03.1211449Z       "id": "REQ-SEAM-UPDATE",
2026-06-23T09:38:03.1211764Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-23T09:38:03.1212103Z       "requiredStages": [
2026-06-23T09:38:03.1212327Z         "impl",
2026-06-23T09:38:03.1212549Z         "unit"
2026-06-23T09:38:03.1212749Z       ],
2026-06-23T09:38:03.1212947Z       "stages": {
2026-06-23T09:38:03.1213148Z         "doc": {
2026-06-23T09:38:03.1213358Z           "complete": false,
2026-06-23T09:38:03.1213591Z           "evidence": []
2026-06-23T09:38:03.1213811Z         },
2026-06-23T09:38:03.1214002Z         "impl": {
2026-06-23T09:38:03.1214206Z           "complete": true,
2026-06-23T09:38:03.1214445Z           "evidence": [
2026-06-23T09:38:03.1214655Z             {
2026-06-23T09:38:03.1214904Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1215190Z               "line": 28
2026-06-23T09:38:03.1215407Z             },
2026-06-23T09:38:03.1215598Z             {
2026-06-23T09:38:03.1215840Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1216131Z               "line": 88
2026-06-23T09:38:03.1216361Z             }
2026-06-23T09:38:03.1216557Z           ]
2026-06-23T09:38:03.1216746Z         },
2026-06-23T09:38:03.1216933Z         "int": {
2026-06-23T09:38:03.1217134Z           "complete": false,
2026-06-23T09:38:03.1217362Z           "evidence": []
2026-06-23T09:38:03.1217577Z         },
2026-06-23T09:38:03.1217771Z         "unit": {
2026-06-23T09:38:03.1217983Z           "complete": true,
2026-06-23T09:38:03.1218223Z           "evidence": [
2026-06-23T09:38:03.1218436Z             {
2026-06-23T09:38:03.1218669Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1219194Z               "line": 332
2026-06-23T09:38:03.1219424Z             },
2026-06-23T09:38:03.1219623Z             {
2026-06-23T09:38:03.1219871Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1220162Z               "line": 343
2026-06-23T09:38:03.1220383Z             }
2026-06-23T09:38:03.1220581Z           ]
2026-06-23T09:38:03.1220874Z         }
2026-06-23T09:38:03.1221056Z       }
2026-06-23T09:38:03.1221236Z     },
2026-06-23T09:38:03.1221423Z     {
2026-06-23T09:38:03.1221618Z       "id": "REQ-SEC-1",
2026-06-23T09:38:03.1222161Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-23T09:38:03.1222714Z       "requiredStages": [
2026-06-23T09:38:03.1222936Z         "impl",
2026-06-23T09:38:03.1223124Z         "unit"
2026-06-23T09:38:03.1223314Z       ],
2026-06-23T09:38:03.1223507Z       "stages": {
2026-06-23T09:38:03.1223717Z         "doc": {
2026-06-23T09:38:03.1223933Z           "complete": false,
2026-06-23T09:38:03.1224166Z           "evidence": []
2026-06-23T09:38:03.1224375Z         },
2026-06-23T09:38:03.1224576Z         "impl": {
2026-06-23T09:38:03.1224785Z           "complete": true,
2026-06-23T09:38:03.1225015Z           "evidence": [
2026-06-23T09:38:03.1225220Z             {
2026-06-23T09:38:03.1225464Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T09:38:03.1225750Z               "line": 86
2026-06-23T09:38:03.1225963Z             },
2026-06-23T09:38:03.1226148Z             {
2026-06-23T09:38:03.1226382Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T09:38:03.1226672Z               "line": 116
2026-06-23T09:38:03.1226883Z             },
2026-06-23T09:38:03.1227079Z             {
2026-06-23T09:38:03.1227311Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T09:38:03.1227588Z               "line": 130
2026-06-23T09:38:03.1227813Z             },
2026-06-23T09:38:03.1228003Z             {
2026-06-23T09:38:03.1228240Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1228515Z               "line": 109
2026-06-23T09:38:03.1228730Z             },
2026-06-23T09:38:03.1228934Z             {
2026-06-23T09:38:03.1229249Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1229520Z               "line": 130
2026-06-23T09:38:03.1229736Z             },
2026-06-23T09:38:03.1229946Z             {
2026-06-23T09:38:03.1230178Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1230456Z               "line": 143
2026-06-23T09:38:03.1230676Z             },
2026-06-23T09:38:03.1230871Z             {
2026-06-23T09:38:03.1231103Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1231387Z               "line": 209
2026-06-23T09:38:03.1231602Z             },
2026-06-23T09:38:03.1231796Z             {
2026-06-23T09:38:03.1232021Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1232293Z               "line": 235
2026-06-23T09:38:03.1232508Z             },
2026-06-23T09:38:03.1232698Z             {
2026-06-23T09:38:03.1232918Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1233190Z               "line": 5950
2026-06-23T09:38:03.1233418Z             }
2026-06-23T09:38:03.1233613Z           ]
2026-06-23T09:38:03.1233798Z         },
2026-06-23T09:38:03.1233987Z         "int": {
2026-06-23T09:38:03.1234197Z           "complete": false,
2026-06-23T09:38:03.1234430Z           "evidence": []
2026-06-23T09:38:03.1234644Z         },
2026-06-23T09:38:03.1234826Z         "unit": {
2026-06-23T09:38:03.1235031Z           "complete": true,
2026-06-23T09:38:03.1235264Z           "evidence": [
2026-06-23T09:38:03.1235470Z             {
2026-06-23T09:38:03.1235699Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T09:38:03.1235970Z               "line": 142
2026-06-23T09:38:03.1236189Z             },
2026-06-23T09:38:03.1236387Z             {
2026-06-23T09:38:03.1236752Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T09:38:03.1237048Z               "line": 194
2026-06-23T09:38:03.1237271Z             },
2026-06-23T09:38:03.1237472Z             {
2026-06-23T09:38:03.1237700Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-23T09:38:03.1237968Z               "line": 235
2026-06-23T09:38:03.1238293Z             },
2026-06-23T09:38:03.1238492Z             {
2026-06-23T09:38:03.1238720Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-23T09:38:03.1239080Z               "line": 140
2026-06-23T09:38:03.1239314Z             },
2026-06-23T09:38:03.1239542Z             {
2026-06-23T09:38:03.1239775Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1240047Z               "line": 247
2026-06-23T09:38:03.1240263Z             },
2026-06-23T09:38:03.1240458Z             {
2026-06-23T09:38:03.1240691Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1240958Z               "line": 277
2026-06-23T09:38:03.1241188Z             },
2026-06-23T09:38:03.1241392Z             {
2026-06-23T09:38:03.1241621Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1241896Z               "line": 310
2026-06-23T09:38:03.1242109Z             },
2026-06-23T09:38:03.1242304Z             {
2026-06-23T09:38:03.1242533Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1242811Z               "line": 329
2026-06-23T09:38:03.1243015Z             },
2026-06-23T09:38:03.1243215Z             {
2026-06-23T09:38:03.1243445Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1243712Z               "line": 362
2026-06-23T09:38:03.1243921Z             },
2026-06-23T09:38:03.1244122Z             {
2026-06-23T09:38:03.1244354Z               "path": "crates/spt-store/src/access.rs",
2026-06-23T09:38:03.1244627Z               "line": 386
2026-06-23T09:38:03.1244828Z             },
2026-06-23T09:38:03.1245025Z             {
2026-06-23T09:38:03.1245243Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1245505Z               "line": 9692
2026-06-23T09:38:03.1245729Z             }
2026-06-23T09:38:03.1245920Z           ]
2026-06-23T09:38:03.1246111Z         }
2026-06-23T09:38:03.1246303Z       }
2026-06-23T09:38:03.1246492Z     },
2026-06-23T09:38:03.1246683Z     {
2026-06-23T09:38:03.1246913Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-23T09:38:03.1251037Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-23T09:38:03.1254548Z       "requiredStages": [
2026-06-23T09:38:03.1254771Z         "impl",
2026-06-23T09:38:03.1254985Z         "unit",
2026-06-23T09:38:03.1255187Z         "int"
2026-06-23T09:38:03.1255375Z       ],
2026-06-23T09:38:03.1255575Z       "stages": {
2026-06-23T09:38:03.1255784Z         "doc": {
2026-06-23T09:38:03.1256108Z           "complete": false,
2026-06-23T09:38:03.1256342Z           "evidence": []
2026-06-23T09:38:03.1256567Z         },
2026-06-23T09:38:03.1256771Z         "impl": {
2026-06-23T09:38:03.1256995Z           "complete": true,
2026-06-23T09:38:03.1257225Z           "evidence": [
2026-06-23T09:38:03.1257445Z             {
2026-06-23T09:38:03.1257691Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.1258076Z               "line": 1188
2026-06-23T09:38:03.1258310Z             },
2026-06-23T09:38:03.1258511Z             {
2026-06-23T09:38:03.1258745Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1259103Z               "line": 1874
2026-06-23T09:38:03.1259345Z             },
2026-06-23T09:38:03.1259559Z             {
2026-06-23T09:38:03.1259770Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1260035Z               "line": 3500
2026-06-23T09:38:03.1260266Z             }
2026-06-23T09:38:03.1260449Z           ]
2026-06-23T09:38:03.1260648Z         },
2026-06-23T09:38:03.1260834Z         "int": {
2026-06-23T09:38:03.1261040Z           "complete": true,
2026-06-23T09:38:03.1261263Z           "evidence": [
2026-06-23T09:38:03.1261473Z             {
2026-06-23T09:38:03.1261716Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:03.1262008Z               "line": 191
2026-06-23T09:38:03.1262232Z             },
2026-06-23T09:38:03.1262431Z             {
2026-06-23T09:38:03.1262657Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-23T09:38:03.1262941Z               "line": 530
2026-06-23T09:38:03.1263152Z             }
2026-06-23T09:38:03.1263349Z           ]
2026-06-23T09:38:03.1263544Z         },
2026-06-23T09:38:03.1263739Z         "unit": {
2026-06-23T09:38:03.1263940Z           "complete": true,
2026-06-23T09:38:03.1264178Z           "evidence": [
2026-06-23T09:38:03.1264383Z             {
2026-06-23T09:38:03.1264617Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:03.1264899Z               "line": 1016
2026-06-23T09:38:03.1265113Z             },
2026-06-23T09:38:03.1265312Z             {
2026-06-23T09:38:03.1265536Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1265806Z               "line": 8863
2026-06-23T09:38:03.1266034Z             }
2026-06-23T09:38:03.1266230Z           ]
2026-06-23T09:38:03.1266421Z         }
2026-06-23T09:38:03.1266616Z       }
2026-06-23T09:38:03.1266812Z     },
2026-06-23T09:38:03.1266997Z     {
2026-06-23T09:38:03.1267217Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-23T09:38:03.1274380Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-23T09:38:03.1280538Z       "requiredStages": [
2026-06-23T09:38:03.1280771Z         "doc",
2026-06-23T09:38:03.1280966Z         "impl",
2026-06-23T09:38:03.1281170Z         "unit",
2026-06-23T09:38:03.1281373Z         "int"
2026-06-23T09:38:03.1281569Z       ],
2026-06-23T09:38:03.1281764Z       "stages": {
2026-06-23T09:38:03.1281973Z         "doc": {
2026-06-23T09:38:03.1282188Z           "complete": true,
2026-06-23T09:38:03.1282418Z           "evidence": [
2026-06-23T09:38:03.1282622Z             {
2026-06-23T09:38:03.1282889Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-23T09:38:03.1283208Z               "line": 130
2026-06-23T09:38:03.1283434Z             },
2026-06-23T09:38:03.1283638Z             {
2026-06-23T09:38:03.1283861Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.1284136Z               "line": 104
2026-06-23T09:38:03.1284359Z             }
2026-06-23T09:38:03.1284554Z           ]
2026-06-23T09:38:03.1284746Z         },
2026-06-23T09:38:03.1284940Z         "impl": {
2026-06-23T09:38:03.1285155Z           "complete": true,
2026-06-23T09:38:03.1285394Z           "evidence": [
2026-06-23T09:38:03.1285599Z             {
2026-06-23T09:38:03.1285851Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.1286152Z               "line": 77
2026-06-23T09:38:03.1286376Z             },
2026-06-23T09:38:03.1291451Z             {
2026-06-23T09:38:03.1291787Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.1292081Z               "line": 183
2026-06-23T09:38:03.1292314Z             },
2026-06-23T09:38:03.1292529Z             {
2026-06-23T09:38:03.1292782Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1293101Z               "line": 222
2026-06-23T09:38:03.1293326Z             },
2026-06-23T09:38:03.1293549Z             {
2026-06-23T09:38:03.1293792Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1294073Z               "line": 71
2026-06-23T09:38:03.1294323Z             },
2026-06-23T09:38:03.1294516Z             {
2026-06-23T09:38:03.1294752Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1295044Z               "line": 187
2026-06-23T09:38:03.1295264Z             }
2026-06-23T09:38:03.1295458Z           ]
2026-06-23T09:38:03.1295649Z         },
2026-06-23T09:38:03.1295840Z         "int": {
2026-06-23T09:38:03.1296054Z           "complete": true,
2026-06-23T09:38:03.1296283Z           "evidence": [
2026-06-23T09:38:03.1296503Z             {
2026-06-23T09:38:03.1296760Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-23T09:38:03.1297073Z               "line": 25
2026-06-23T09:38:03.1297286Z             }
2026-06-23T09:38:03.1297481Z           ]
2026-06-23T09:38:03.1297681Z         },
2026-06-23T09:38:03.1297873Z         "unit": {
2026-06-23T09:38:03.1298087Z           "complete": true,
2026-06-23T09:38:03.1298310Z           "evidence": [
2026-06-23T09:38:03.1298516Z             {
2026-06-23T09:38:03.1298770Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.1299164Z               "line": 347
2026-06-23T09:38:03.1299404Z             },
2026-06-23T09:38:03.1299603Z             {
2026-06-23T09:38:03.1300041Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-23T09:38:03.1300331Z               "line": 397
2026-06-23T09:38:03.1300551Z             },
2026-06-23T09:38:03.1300756Z             {
2026-06-23T09:38:03.1301000Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1301300Z               "line": 1291
2026-06-23T09:38:03.1301630Z             },
2026-06-23T09:38:03.1301829Z             {
2026-06-23T09:38:03.1302072Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1302357Z               "line": 184
2026-06-23T09:38:03.1302584Z             },
2026-06-23T09:38:03.1302788Z             {
2026-06-23T09:38:03.1303022Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1303319Z               "line": 208
2026-06-23T09:38:03.1303543Z             },
2026-06-23T09:38:03.1303747Z             {
2026-06-23T09:38:03.1303981Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1304268Z               "line": 236
2026-06-23T09:38:03.1304477Z             },
2026-06-23T09:38:03.1304671Z             {
2026-06-23T09:38:03.1304907Z               "path": "crates/spt/src/picker/model.rs",
2026-06-23T09:38:03.1305191Z               "line": 1012
2026-06-23T09:38:03.1305412Z             }
2026-06-23T09:38:03.1305604Z           ]
2026-06-23T09:38:03.1305799Z         }
2026-06-23T09:38:03.1306003Z       }
2026-06-23T09:38:03.1306199Z     },
2026-06-23T09:38:03.1306390Z     {
2026-06-23T09:38:03.1306596Z       "id": "REQ-SHELL-1",
2026-06-23T09:38:03.1307652Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-23T09:38:03.1308719Z       "requiredStages": [
2026-06-23T09:38:03.1309067Z         "impl",
2026-06-23T09:38:03.1309310Z         "unit",
2026-06-23T09:38:03.1309519Z         "int"
2026-06-23T09:38:03.1309715Z       ],
2026-06-23T09:38:03.1309906Z       "stages": {
2026-06-23T09:38:03.1310115Z         "doc": {
2026-06-23T09:38:03.1310331Z           "complete": false,
2026-06-23T09:38:03.1310567Z           "evidence": []
2026-06-23T09:38:03.1310787Z         },
2026-06-23T09:38:03.1310988Z         "impl": {
2026-06-23T09:38:03.1311206Z           "complete": true,
2026-06-23T09:38:03.1311440Z           "evidence": [
2026-06-23T09:38:03.1311650Z             {
2026-06-23T09:38:03.1311899Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1312195Z               "line": 189
2026-06-23T09:38:03.1312422Z             },
2026-06-23T09:38:03.1312622Z             {
2026-06-23T09:38:03.1312851Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1313144Z               "line": 268
2026-06-23T09:38:03.1313358Z             },
2026-06-23T09:38:03.1313555Z             {
2026-06-23T09:38:03.1313803Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1314113Z               "line": 27
2026-06-23T09:38:03.1314359Z             },
2026-06-23T09:38:03.1314560Z             {
2026-06-23T09:38:03.1314804Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1315090Z               "line": 52
2026-06-23T09:38:03.1315308Z             },
2026-06-23T09:38:03.1315504Z             {
2026-06-23T09:38:03.1315732Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1316011Z               "line": 144
2026-06-23T09:38:03.1316230Z             },
2026-06-23T09:38:03.1316436Z             {
2026-06-23T09:38:03.1316670Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1316950Z               "line": 176
2026-06-23T09:38:03.1317170Z             },
2026-06-23T09:38:03.1317366Z             {
2026-06-23T09:38:03.1317599Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1318071Z               "line": 22
2026-06-23T09:38:03.1318275Z             },
2026-06-23T09:38:03.1318468Z             {
2026-06-23T09:38:03.1318708Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1319050Z               "line": 65
2026-06-23T09:38:03.1319270Z             },
2026-06-23T09:38:03.1319459Z             {
2026-06-23T09:38:03.1319803Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1320089Z               "line": 76
2026-06-23T09:38:03.1320303Z             },
2026-06-23T09:38:03.1320505Z             {
2026-06-23T09:38:03.1320742Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1321023Z               "line": 151
2026-06-23T09:38:03.1321243Z             },
2026-06-23T09:38:03.1321437Z             {
2026-06-23T09:38:03.1321676Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1321962Z               "line": 210
2026-06-23T09:38:03.1322172Z             },
2026-06-23T09:38:03.1322381Z             {
2026-06-23T09:38:03.1322611Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1322906Z               "line": 261
2026-06-23T09:38:03.1323126Z             },
2026-06-23T09:38:03.1323320Z             {
2026-06-23T09:38:03.1323566Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1323843Z               "line": 283
2026-06-23T09:38:03.1324052Z             },
2026-06-23T09:38:03.1324257Z             {
2026-06-23T09:38:03.1324491Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1324772Z               "line": 296
2026-06-23T09:38:03.1324997Z             },
2026-06-23T09:38:03.1325192Z             {
2026-06-23T09:38:03.1325420Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.1325693Z               "line": 217
2026-06-23T09:38:03.1325908Z             },
2026-06-23T09:38:03.1326107Z             {
2026-06-23T09:38:03.1326254Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.1326363Z               "line": 233
2026-06-23T09:38:03.1326466Z             },
2026-06-23T09:38:03.1326566Z             {
2026-06-23T09:38:03.1326710Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:03.1326828Z               "line": 41
2026-06-23T09:38:03.1326920Z             },
2026-06-23T09:38:03.1327019Z             {
2026-06-23T09:38:03.1327157Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:03.1327263Z               "line": 222
2026-06-23T09:38:03.1327363Z             },
2026-06-23T09:38:03.1327462Z             {
2026-06-23T09:38:03.1327606Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-23T09:38:03.1327721Z               "line": 173
2026-06-23T09:38:03.1327825Z             },
2026-06-23T09:38:03.1327926Z             {
2026-06-23T09:38:03.1328059Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:03.1328174Z               "line": 354
2026-06-23T09:38:03.1328265Z             },
2026-06-23T09:38:03.1328373Z             {
2026-06-23T09:38:03.1328499Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:03.1328603Z               "line": 419
2026-06-23T09:38:03.1328706Z             },
2026-06-23T09:38:03.1328811Z             {
2026-06-23T09:38:03.1329028Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1329143Z               "line": 333
2026-06-23T09:38:03.1329248Z             },
2026-06-23T09:38:03.1329356Z             {
2026-06-23T09:38:03.1329496Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1329611Z               "line": 7385
2026-06-23T09:38:03.1329705Z             },
2026-06-23T09:38:03.1329811Z             {
2026-06-23T09:38:03.1329935Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1330043Z               "line": 7535
2026-06-23T09:38:03.1330145Z             },
2026-06-23T09:38:03.1330239Z             {
2026-06-23T09:38:03.1330368Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1330588Z               "line": 7711
2026-06-23T09:38:03.1330697Z             }
2026-06-23T09:38:03.1330803Z           ]
2026-06-23T09:38:03.1330906Z         },
2026-06-23T09:38:03.1331017Z         "int": {
2026-06-23T09:38:03.1331132Z           "complete": true,
2026-06-23T09:38:03.1331250Z           "evidence": [
2026-06-23T09:38:03.1331351Z             {
2026-06-23T09:38:03.1331592Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.1331697Z               "line": 717
2026-06-23T09:38:03.1331803Z             },
2026-06-23T09:38:03.1331907Z             {
2026-06-23T09:38:03.1332050Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-23T09:38:03.1332175Z               "line": 8
2026-06-23T09:38:03.1332269Z             },
2026-06-23T09:38:03.1332390Z             {
2026-06-23T09:38:03.1332555Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-23T09:38:03.1332680Z               "line": 49
2026-06-23T09:38:03.1332789Z             },
2026-06-23T09:38:03.1332894Z             {
2026-06-23T09:38:03.1333038Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1333147Z               "line": 780
2026-06-23T09:38:03.1333251Z             },
2026-06-23T09:38:03.1333348Z             {
2026-06-23T09:38:03.1333495Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1333605Z               "line": 1215
2026-06-23T09:38:03.1333715Z             },
2026-06-23T09:38:03.1333809Z             {
2026-06-23T09:38:03.1333956Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-23T09:38:03.1334074Z               "line": 17
2026-06-23T09:38:03.1334173Z             },
2026-06-23T09:38:03.1334273Z             {
2026-06-23T09:38:03.1334416Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-23T09:38:03.1334525Z               "line": 14
2026-06-23T09:38:03.1334622Z             }
2026-06-23T09:38:03.1334717Z           ]
2026-06-23T09:38:03.1334826Z         },
2026-06-23T09:38:03.1334928Z         "unit": {
2026-06-23T09:38:03.1335037Z           "complete": true,
2026-06-23T09:38:03.1335146Z           "evidence": [
2026-06-23T09:38:03.1335247Z             {
2026-06-23T09:38:03.1335394Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1335508Z               "line": 246
2026-06-23T09:38:03.1335609Z             },
2026-06-23T09:38:03.1335718Z             {
2026-06-23T09:38:03.1335848Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1335962Z               "line": 279
2026-06-23T09:38:03.1336062Z             },
2026-06-23T09:38:03.1336163Z             {
2026-06-23T09:38:03.1336305Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1336424Z               "line": 319
2026-06-23T09:38:03.1336535Z             },
2026-06-23T09:38:03.1336634Z             {
2026-06-23T09:38:03.1336790Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1336895Z               "line": 601
2026-06-23T09:38:03.1337007Z             },
2026-06-23T09:38:03.1337112Z             {
2026-06-23T09:38:03.1337256Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1337369Z               "line": 674
2026-06-23T09:38:03.1337475Z             },
2026-06-23T09:38:03.1337580Z             {
2026-06-23T09:38:03.1337722Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1337842Z               "line": 818
2026-06-23T09:38:03.1337942Z             },
2026-06-23T09:38:03.1338051Z             {
2026-06-23T09:38:03.1338200Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.1338299Z               "line": 595
2026-06-23T09:38:03.1338409Z             },
2026-06-23T09:38:03.1338510Z             {
2026-06-23T09:38:03.1338652Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-23T09:38:03.1338763Z               "line": 399
2026-06-23T09:38:03.1338872Z             },
2026-06-23T09:38:03.1339039Z             {
2026-06-23T09:38:03.1339159Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1339385Z               "line": 10514
2026-06-23T09:38:03.1339480Z             },
2026-06-23T09:38:03.1339588Z             {
2026-06-23T09:38:03.1339712Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1339828Z               "line": 10838
2026-06-23T09:38:03.1339936Z             },
2026-06-23T09:38:03.1340118Z             {
2026-06-23T09:38:03.1340241Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1340352Z               "line": 11255
2026-06-23T09:38:03.1340461Z             }
2026-06-23T09:38:03.1340565Z           ]
2026-06-23T09:38:03.1340672Z         }
2026-06-23T09:38:03.1340780Z       }
2026-06-23T09:38:03.1340880Z     },
2026-06-23T09:38:03.1340986Z     {
2026-06-23T09:38:03.1341095Z       "id": "REQ-SHELL-2",
2026-06-23T09:38:03.1342796Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-23T09:38:03.1342931Z       "requiredStages": [
2026-06-23T09:38:03.1343040Z         "impl",
2026-06-23T09:38:03.1343139Z         "unit",
2026-06-23T09:38:03.1343240Z         "int"
2026-06-23T09:38:03.1343349Z       ],
2026-06-23T09:38:03.1343458Z       "stages": {
2026-06-23T09:38:03.1343555Z         "doc": {
2026-06-23T09:38:03.1343678Z           "complete": false,
2026-06-23T09:38:03.1343788Z           "evidence": []
2026-06-23T09:38:03.1343899Z         },
2026-06-23T09:38:03.1344007Z         "impl": {
2026-06-23T09:38:03.1344117Z           "complete": true,
2026-06-23T09:38:03.1344228Z           "evidence": [
2026-06-23T09:38:03.1344336Z             {
2026-06-23T09:38:03.1344488Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:03.1344597Z               "line": 217
2026-06-23T09:38:03.1344710Z             },
2026-06-23T09:38:03.1344810Z             {
2026-06-23T09:38:03.1344963Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.1345086Z               "line": 403
2026-06-23T09:38:03.1345187Z             },
2026-06-23T09:38:03.1345296Z             {
2026-06-23T09:38:03.1345419Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-23T09:38:03.1345530Z               "line": 250
2026-06-23T09:38:03.1345630Z             },
2026-06-23T09:38:03.1345729Z             {
2026-06-23T09:38:03.1345878Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.1345983Z               "line": 611
2026-06-23T09:38:03.1346093Z             },
2026-06-23T09:38:03.1346193Z             {
2026-06-23T09:38:03.1346336Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1346437Z               "line": 30
2026-06-23T09:38:03.1346531Z             },
2026-06-23T09:38:03.1346631Z             {
2026-06-23T09:38:03.1346781Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1346888Z               "line": 409
2026-06-23T09:38:03.1346989Z             },
2026-06-23T09:38:03.1347100Z             {
2026-06-23T09:38:03.1347236Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1347355Z               "line": 445
2026-06-23T09:38:03.1347464Z             },
2026-06-23T09:38:03.1347563Z             {
2026-06-23T09:38:03.1347710Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1347821Z               "line": 660
2026-06-23T09:38:03.1347930Z             },
2026-06-23T09:38:03.1348030Z             {
2026-06-23T09:38:03.1348183Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.1348296Z               "line": 348
2026-06-23T09:38:03.1348402Z             },
2026-06-23T09:38:03.1348507Z             {
2026-06-23T09:38:03.1348645Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1348831Z               "line": 115
2026-06-23T09:38:03.1348931Z             },
2026-06-23T09:38:03.1349122Z             {
2026-06-23T09:38:03.1349270Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1349375Z               "line": 120
2026-06-23T09:38:03.1349488Z             },
2026-06-23T09:38:03.1349714Z             {
2026-06-23T09:38:03.1349860Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1349975Z               "line": 376
2026-06-23T09:38:03.1350073Z             },
2026-06-23T09:38:03.1350181Z             {
2026-06-23T09:38:03.1350310Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1350425Z               "line": 502
2026-06-23T09:38:03.1350529Z             },
2026-06-23T09:38:03.1350626Z             {
2026-06-23T09:38:03.1350768Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1350878Z               "line": 24
2026-06-23T09:38:03.1350988Z             },
2026-06-23T09:38:03.1351093Z             {
2026-06-23T09:38:03.1351237Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1351341Z               "line": 76
2026-06-23T09:38:03.1351454Z             },
2026-06-23T09:38:03.1351556Z             {
2026-06-23T09:38:03.1351693Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1351812Z               "line": 154
2026-06-23T09:38:03.1351904Z             },
2026-06-23T09:38:03.1352017Z             {
2026-06-23T09:38:03.1352156Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1352266Z               "line": 177
2026-06-23T09:38:03.1352365Z             },
2026-06-23T09:38:03.1352466Z             {
2026-06-23T09:38:03.1352614Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1352717Z               "line": 273
2026-06-23T09:38:03.1352827Z             },
2026-06-23T09:38:03.1352923Z             {
2026-06-23T09:38:03.1353070Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1353180Z               "line": 456
2026-06-23T09:38:03.1353286Z             },
2026-06-23T09:38:03.1353389Z             {
2026-06-23T09:38:03.1353534Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1353643Z               "line": 538
2026-06-23T09:38:03.1353752Z             },
2026-06-23T09:38:03.1353862Z             {
2026-06-23T09:38:03.1354009Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-23T09:38:03.1354115Z               "line": 27
2026-06-23T09:38:03.1354229Z             },
2026-06-23T09:38:03.1354319Z             {
2026-06-23T09:38:03.1354464Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-23T09:38:03.1354562Z               "line": 48
2026-06-23T09:38:03.1354672Z             },
2026-06-23T09:38:03.1354779Z             {
2026-06-23T09:38:03.1354910Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1355023Z               "line": 517
2026-06-23T09:38:03.1355124Z             },
2026-06-23T09:38:03.1355232Z             {
2026-06-23T09:38:03.1355355Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1355475Z               "line": 2275
2026-06-23T09:38:03.1355584Z             },
2026-06-23T09:38:03.1355670Z             {
2026-06-23T09:38:03.1355809Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1355908Z               "line": 7399
2026-06-23T09:38:03.1356024Z             },
2026-06-23T09:38:03.1356128Z             {
2026-06-23T09:38:03.1356252Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1356367Z               "line": 7460
2026-06-23T09:38:03.1356467Z             },
2026-06-23T09:38:03.1356576Z             {
2026-06-23T09:38:03.1356701Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1356810Z               "line": 7488
2026-06-23T09:38:03.1356920Z             },
2026-06-23T09:38:03.1357016Z             {
2026-06-23T09:38:03.1357239Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1357350Z               "line": 7542
2026-06-23T09:38:03.1357453Z             },
2026-06-23T09:38:03.1357559Z             {
2026-06-23T09:38:03.1357689Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1357792Z               "line": 7797
2026-06-23T09:38:03.1357895Z             },
2026-06-23T09:38:03.1358066Z             {
2026-06-23T09:38:03.1358194Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1358299Z               "line": 7857
2026-06-23T09:38:03.1358404Z             },
2026-06-23T09:38:03.1358513Z             {
2026-06-23T09:38:03.1358648Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.1358747Z               "line": 298
2026-06-23T09:38:03.1358851Z             },
2026-06-23T09:38:03.1359019Z             {
2026-06-23T09:38:03.1359157Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.1359263Z               "line": 339
2026-06-23T09:38:03.1359367Z             }
2026-06-23T09:38:03.1359481Z           ]
2026-06-23T09:38:03.1359574Z         },
2026-06-23T09:38:03.1359682Z         "int": {
2026-06-23T09:38:03.1359792Z           "complete": true,
2026-06-23T09:38:03.1359903Z           "evidence": [
2026-06-23T09:38:03.1360006Z             {
2026-06-23T09:38:03.1360155Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.1360259Z               "line": 710
2026-06-23T09:38:03.1360363Z             },
2026-06-23T09:38:03.1360467Z             {
2026-06-23T09:38:03.1360605Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1360718Z               "line": 780
2026-06-23T09:38:03.1360823Z             },
2026-06-23T09:38:03.1360933Z             {
2026-06-23T09:38:03.1361075Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1361181Z               "line": 1215
2026-06-23T09:38:03.1361291Z             },
2026-06-23T09:38:03.1361390Z             {
2026-06-23T09:38:03.1361548Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-23T09:38:03.1361657Z               "line": 18
2026-06-23T09:38:03.1361758Z             }
2026-06-23T09:38:03.1361867Z           ]
2026-06-23T09:38:03.1361972Z         },
2026-06-23T09:38:03.1362077Z         "unit": {
2026-06-23T09:38:03.1362182Z           "complete": true,
2026-06-23T09:38:03.1362301Z           "evidence": [
2026-06-23T09:38:03.1362402Z             {
2026-06-23T09:38:03.1362559Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1362677Z               "line": 744
2026-06-23T09:38:03.1362770Z             },
2026-06-23T09:38:03.1362882Z             {
2026-06-23T09:38:03.1363032Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-23T09:38:03.1363146Z               "line": 796
2026-06-23T09:38:03.1363245Z             },
2026-06-23T09:38:03.1363344Z             {
2026-06-23T09:38:03.1363488Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1363597Z               "line": 707
2026-06-23T09:38:03.1363707Z             },
2026-06-23T09:38:03.1363812Z             {
2026-06-23T09:38:03.1363954Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1364065Z               "line": 756
2026-06-23T09:38:03.1364175Z             },
2026-06-23T09:38:03.1364278Z             {
2026-06-23T09:38:03.1364418Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1364532Z               "line": 780
2026-06-23T09:38:03.1364632Z             },
2026-06-23T09:38:03.1364733Z             {
2026-06-23T09:38:03.1364875Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1364986Z               "line": 603
2026-06-23T09:38:03.1365090Z             },
2026-06-23T09:38:03.1365190Z             {
2026-06-23T09:38:03.1365334Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1365442Z               "line": 624
2026-06-23T09:38:03.1365542Z             },
2026-06-23T09:38:03.1365646Z             {
2026-06-23T09:38:03.1365901Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1366017Z               "line": 660
2026-06-23T09:38:03.1366116Z             },
2026-06-23T09:38:03.1366216Z             {
2026-06-23T09:38:03.1366350Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1366454Z               "line": 714
2026-06-23T09:38:03.1366661Z             },
2026-06-23T09:38:03.1366765Z             {
2026-06-23T09:38:03.1366913Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1367022Z               "line": 732
2026-06-23T09:38:03.1367126Z             },
2026-06-23T09:38:03.1367228Z             {
2026-06-23T09:38:03.1367370Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1367475Z               "line": 766
2026-06-23T09:38:03.1367571Z             },
2026-06-23T09:38:03.1367670Z             {
2026-06-23T09:38:03.1367804Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-23T09:38:03.1367924Z               "line": 841
2026-06-23T09:38:03.1368027Z             },
2026-06-23T09:38:03.1368133Z             {
2026-06-23T09:38:03.1368286Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-23T09:38:03.1368390Z               "line": 85
2026-06-23T09:38:03.1368495Z             },
2026-06-23T09:38:03.1368599Z             {
2026-06-23T09:38:03.1368730Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1368835Z               "line": 9438
2026-06-23T09:38:03.1368997Z             },
2026-06-23T09:38:03.1369116Z             {
2026-06-23T09:38:03.1369236Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1369345Z               "line": 10592
2026-06-23T09:38:03.1369460Z             },
2026-06-23T09:38:03.1369565Z             {
2026-06-23T09:38:03.1369693Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1369809Z               "line": 10662
2026-06-23T09:38:03.1369918Z             },
2026-06-23T09:38:03.1370013Z             {
2026-06-23T09:38:03.1370148Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1370256Z               "line": 10700
2026-06-23T09:38:03.1370361Z             }
2026-06-23T09:38:03.1370463Z           ]
2026-06-23T09:38:03.1370570Z         }
2026-06-23T09:38:03.1370681Z       }
2026-06-23T09:38:03.1370773Z     },
2026-06-23T09:38:03.1370876Z     {
2026-06-23T09:38:03.1370989Z       "id": "REQ-SHELL-3",
2026-06-23T09:38:03.1372899Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-23T09:38:03.1373034Z       "requiredStages": [
2026-06-23T09:38:03.1373142Z         "impl",
2026-06-23T09:38:03.1373252Z         "unit",
2026-06-23T09:38:03.1373358Z         "int"
2026-06-23T09:38:03.1377778Z       ],
2026-06-23T09:38:03.1377911Z       "stages": {
2026-06-23T09:38:03.1378016Z         "doc": {
2026-06-23T09:38:03.1378170Z           "complete": false,
2026-06-23T09:38:03.1378273Z           "evidence": []
2026-06-23T09:38:03.1378384Z         },
2026-06-23T09:38:03.1378489Z         "impl": {
2026-06-23T09:38:03.1378602Z           "complete": true,
2026-06-23T09:38:03.1378718Z           "evidence": [
2026-06-23T09:38:03.1378823Z             {
2026-06-23T09:38:03.1379050Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.1379150Z               "line": 229
2026-06-23T09:38:03.1379257Z             },
2026-06-23T09:38:03.1379367Z             {
2026-06-23T09:38:03.1379544Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1379815Z               "line": 36
2026-06-23T09:38:03.1379919Z             },
2026-06-23T09:38:03.1380030Z             {
2026-06-23T09:38:03.1380169Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1380277Z               "line": 137
2026-06-23T09:38:03.1380369Z             },
2026-06-23T09:38:03.1380478Z             {
2026-06-23T09:38:03.1380732Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1380830Z               "line": 153
2026-06-23T09:38:03.1380940Z             },
2026-06-23T09:38:03.1381037Z             {
2026-06-23T09:38:03.1381188Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1381285Z               "line": 165
2026-06-23T09:38:03.1381394Z             },
2026-06-23T09:38:03.1381497Z             {
2026-06-23T09:38:03.1381635Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1381753Z               "line": 242
2026-06-23T09:38:03.1381862Z             },
2026-06-23T09:38:03.1381972Z             {
2026-06-23T09:38:03.1382115Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1382209Z               "line": 267
2026-06-23T09:38:03.1382316Z             },
2026-06-23T09:38:03.1382416Z             {
2026-06-23T09:38:03.1382558Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1382668Z               "line": 293
2026-06-23T09:38:03.1382782Z             },
2026-06-23T09:38:03.1382888Z             {
2026-06-23T09:38:03.1383021Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T09:38:03.1383125Z               "line": 51
2026-06-23T09:38:03.1383221Z             },
2026-06-23T09:38:03.1383326Z             {
2026-06-23T09:38:03.1383469Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1383580Z               "line": 333
2026-06-23T09:38:03.1383688Z             },
2026-06-23T09:38:03.1383774Z             {
2026-06-23T09:38:03.1383919Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1384022Z               "line": 373
2026-06-23T09:38:03.1384132Z             },
2026-06-23T09:38:03.1384224Z             {
2026-06-23T09:38:03.1384360Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1384479Z               "line": 602
2026-06-23T09:38:03.1384570Z             },
2026-06-23T09:38:03.1384679Z             {
2026-06-23T09:38:03.1384827Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1384937Z               "line": 132
2026-06-23T09:38:03.1385032Z             },
2026-06-23T09:38:03.1385137Z             {
2026-06-23T09:38:03.1385285Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1385389Z               "line": 450
2026-06-23T09:38:03.1385496Z             },
2026-06-23T09:38:03.1385600Z             {
2026-06-23T09:38:03.1385752Z               "path": "crates/spt-proto/src/event.rs",
2026-06-23T09:38:03.1385853Z               "line": 74
2026-06-23T09:38:03.1385962Z             },
2026-06-23T09:38:03.1386072Z             {
2026-06-23T09:38:03.1386215Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1386339Z               "line": 652
2026-06-23T09:38:03.1386440Z             },
2026-06-23T09:38:03.1386548Z             {
2026-06-23T09:38:03.1386690Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1386809Z               "line": 396
2026-06-23T09:38:03.1386922Z             },
2026-06-23T09:38:03.1387026Z             {
2026-06-23T09:38:03.1387165Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1387274Z               "line": 7583
2026-06-23T09:38:03.1387384Z             }
2026-06-23T09:38:03.1387490Z           ]
2026-06-23T09:38:03.1387584Z         },
2026-06-23T09:38:03.1387694Z         "int": {
2026-06-23T09:38:03.1387800Z           "complete": true,
2026-06-23T09:38:03.1387913Z           "evidence": [
2026-06-23T09:38:03.1388014Z             {
2026-06-23T09:38:03.1388171Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1388367Z               "line": 1264
2026-06-23T09:38:03.1388472Z             },
2026-06-23T09:38:03.1388576Z             {
2026-06-23T09:38:03.1388715Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-23T09:38:03.1388824Z               "line": 17
2026-06-23T09:38:03.1388919Z             }
2026-06-23T09:38:03.1389254Z           ]
2026-06-23T09:38:03.1389359Z         },
2026-06-23T09:38:03.1389467Z         "unit": {
2026-06-23T09:38:03.1389581Z           "complete": true,
2026-06-23T09:38:03.1389681Z           "evidence": [
2026-06-23T09:38:03.1389784Z             {
2026-06-23T09:38:03.1389932Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1390047Z               "line": 311
2026-06-23T09:38:03.1390151Z             },
2026-06-23T09:38:03.1390256Z             {
2026-06-23T09:38:03.1390395Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1390499Z               "line": 325
2026-06-23T09:38:03.1390614Z             },
2026-06-23T09:38:03.1390714Z             {
2026-06-23T09:38:03.1390857Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1390967Z               "line": 343
2026-06-23T09:38:03.1391072Z             },
2026-06-23T09:38:03.1391177Z             {
2026-06-23T09:38:03.1391316Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1391424Z               "line": 364
2026-06-23T09:38:03.1391520Z             },
2026-06-23T09:38:03.1391626Z             {
2026-06-23T09:38:03.1391772Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-23T09:38:03.1391878Z               "line": 376
2026-06-23T09:38:03.1391987Z             },
2026-06-23T09:38:03.1392086Z             {
2026-06-23T09:38:03.1392239Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1392346Z               "line": 897
2026-06-23T09:38:03.1392455Z             },
2026-06-23T09:38:03.1392561Z             {
2026-06-23T09:38:03.1392703Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1392813Z               "line": 957
2026-06-23T09:38:03.1392914Z             },
2026-06-23T09:38:03.1393022Z             {
2026-06-23T09:38:03.1393157Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-23T09:38:03.1393262Z               "line": 338
2026-06-23T09:38:03.1393371Z             },
2026-06-23T09:38:03.1393472Z             {
2026-06-23T09:38:03.1393605Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:03.1393705Z               "line": 769
2026-06-23T09:38:03.1393816Z             },
2026-06-23T09:38:03.1393914Z             {
2026-06-23T09:38:03.1394039Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1394150Z               "line": 10374
2026-06-23T09:38:03.1394248Z             }
2026-06-23T09:38:03.1394354Z           ]
2026-06-23T09:38:03.1394450Z         }
2026-06-23T09:38:03.1394553Z       }
2026-06-23T09:38:03.1394654Z     },
2026-06-23T09:38:03.1394755Z     {
2026-06-23T09:38:03.1394873Z       "id": "REQ-SHELL-4",
2026-06-23T09:38:03.1396812Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-23T09:38:03.1396951Z       "requiredStages": [
2026-06-23T09:38:03.1397061Z         "doc",
2026-06-23T09:38:03.1397170Z         "impl",
2026-06-23T09:38:03.1397279Z         "unit",
2026-06-23T09:38:03.1397384Z         "int"
2026-06-23T09:38:03.1397492Z       ],
2026-06-23T09:38:03.1397586Z       "stages": {
2026-06-23T09:38:03.1397801Z         "doc": {
2026-06-23T09:38:03.1397916Z           "complete": true,
2026-06-23T09:38:03.1398021Z           "evidence": [
2026-06-23T09:38:03.1398135Z             {
2026-06-23T09:38:03.1398259Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1398369Z               "line": 294
2026-06-23T09:38:03.1398473Z             },
2026-06-23T09:38:03.1398655Z             {
2026-06-23T09:38:03.1398923Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-23T09:38:03.1399117Z               "line": 88
2026-06-23T09:38:03.1399228Z             }
2026-06-23T09:38:03.1399323Z           ]
2026-06-23T09:38:03.1399428Z         },
2026-06-23T09:38:03.1399533Z         "impl": {
2026-06-23T09:38:03.1399638Z           "complete": true,
2026-06-23T09:38:03.1399752Z           "evidence": [
2026-06-23T09:38:03.1399857Z             {
2026-06-23T09:38:03.1400009Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.1400117Z               "line": 243
2026-06-23T09:38:03.1400232Z             },
2026-06-23T09:38:03.1400321Z             {
2026-06-23T09:38:03.1400468Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-23T09:38:03.1400574Z               "line": 61
2026-06-23T09:38:03.1400673Z             },
2026-06-23T09:38:03.1400778Z             {
2026-06-23T09:38:03.1400917Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1401040Z               "line": 218
2026-06-23T09:38:03.1401131Z             },
2026-06-23T09:38:03.1401246Z             {
2026-06-23T09:38:03.1401378Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1401485Z               "line": 245
2026-06-23T09:38:03.1401603Z             },
2026-06-23T09:38:03.1401712Z             {
2026-06-23T09:38:03.1401856Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.1401960Z               "line": 566
2026-06-23T09:38:03.1402061Z             },
2026-06-23T09:38:03.1402167Z             {
2026-06-23T09:38:03.1402309Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.1402420Z               "line": 1141
2026-06-23T09:38:03.1402524Z             },
2026-06-23T09:38:03.1402627Z             {
2026-06-23T09:38:03.1402765Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.1402879Z               "line": 1153
2026-06-23T09:38:03.1402992Z             },
2026-06-23T09:38:03.1403087Z             {
2026-06-23T09:38:03.1403235Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.1403359Z               "line": 1194
2026-06-23T09:38:03.1403451Z             },
2026-06-23T09:38:03.1403560Z             {
2026-06-23T09:38:03.1403698Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1403807Z               "line": 458
2026-06-23T09:38:03.1403907Z             },
2026-06-23T09:38:03.1404013Z             {
2026-06-23T09:38:03.1404141Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1404255Z               "line": 44
2026-06-23T09:38:03.1404361Z             },
2026-06-23T09:38:03.1404461Z             {
2026-06-23T09:38:03.1404594Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1404700Z               "line": 208
2026-06-23T09:38:03.1404808Z             },
2026-06-23T09:38:03.1404899Z             {
2026-06-23T09:38:03.1405044Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1405146Z               "line": 227
2026-06-23T09:38:03.1405248Z             },
2026-06-23T09:38:03.1405349Z             {
2026-06-23T09:38:03.1405480Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1405584Z               "line": 253
2026-06-23T09:38:03.1405681Z             },
2026-06-23T09:38:03.1405785Z             {
2026-06-23T09:38:03.1405923Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1406029Z               "line": 272
2026-06-23T09:38:03.1406137Z             },
2026-06-23T09:38:03.1406348Z             {
2026-06-23T09:38:03.1406490Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1406591Z               "line": 392
2026-06-23T09:38:03.1406691Z             },
2026-06-23T09:38:03.1406795Z             {
2026-06-23T09:38:03.1406931Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1407149Z               "line": 421
2026-06-23T09:38:03.1407245Z             },
2026-06-23T09:38:03.1407354Z             {
2026-06-23T09:38:03.1407487Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1407599Z               "line": 439
2026-06-23T09:38:03.1407706Z             },
2026-06-23T09:38:03.1407806Z             {
2026-06-23T09:38:03.1407944Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1408042Z               "line": 458
2026-06-23T09:38:03.1408146Z             },
2026-06-23T09:38:03.1408247Z             {
2026-06-23T09:38:03.1408376Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1408490Z               "line": 486
2026-06-23T09:38:03.1408596Z             },
2026-06-23T09:38:03.1408695Z             {
2026-06-23T09:38:03.1408819Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1408934Z               "line": 671
2026-06-23T09:38:03.1409115Z             },
2026-06-23T09:38:03.1409211Z             {
2026-06-23T09:38:03.1409358Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1409458Z               "line": 876
2026-06-23T09:38:03.1409563Z             },
2026-06-23T09:38:03.1409663Z             {
2026-06-23T09:38:03.1409803Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1409906Z               "line": 435
2026-06-23T09:38:03.1410002Z             },
2026-06-23T09:38:03.1410108Z             {
2026-06-23T09:38:03.1410235Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1410345Z               "line": 7639
2026-06-23T09:38:03.1410437Z             }
2026-06-23T09:38:03.1410541Z           ]
2026-06-23T09:38:03.1410649Z         },
2026-06-23T09:38:03.1410744Z         "int": {
2026-06-23T09:38:03.1410858Z           "complete": true,
2026-06-23T09:38:03.1410952Z           "evidence": [
2026-06-23T09:38:03.1411052Z             {
2026-06-23T09:38:03.1411186Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-23T09:38:03.1411299Z               "line": 18
2026-06-23T09:38:03.1411401Z             }
2026-06-23T09:38:03.1411505Z           ]
2026-06-23T09:38:03.1411610Z         },
2026-06-23T09:38:03.1411721Z         "unit": {
2026-06-23T09:38:03.1411825Z           "complete": true,
2026-06-23T09:38:03.1411929Z           "evidence": [
2026-06-23T09:38:03.1412035Z             {
2026-06-23T09:38:03.1412168Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.1412267Z               "line": 1391
2026-06-23T09:38:03.1412355Z             },
2026-06-23T09:38:03.1412450Z             {
2026-06-23T09:38:03.1412587Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.1412694Z               "line": 1420
2026-06-23T09:38:03.1412797Z             },
2026-06-23T09:38:03.1412893Z             {
2026-06-23T09:38:03.1413018Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1413122Z               "line": 504
2026-06-23T09:38:03.1413216Z             },
2026-06-23T09:38:03.1413326Z             {
2026-06-23T09:38:03.1413457Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1413566Z               "line": 514
2026-06-23T09:38:03.1413666Z             },
2026-06-23T09:38:03.1413758Z             {
2026-06-23T09:38:03.1413895Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1414001Z               "line": 531
2026-06-23T09:38:03.1414106Z             },
2026-06-23T09:38:03.1414195Z             {
2026-06-23T09:38:03.1414339Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1414444Z               "line": 543
2026-06-23T09:38:03.1414645Z             },
2026-06-23T09:38:03.1414754Z             {
2026-06-23T09:38:03.1414892Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-23T09:38:03.1415002Z               "line": 555
2026-06-23T09:38:03.1415111Z             },
2026-06-23T09:38:03.1415207Z             {
2026-06-23T09:38:03.1415368Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1415565Z               "line": 1192
2026-06-23T09:38:03.1415674Z             },
2026-06-23T09:38:03.1415769Z             {
2026-06-23T09:38:03.1415918Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:03.1416035Z               "line": 776
2026-06-23T09:38:03.1416135Z             }
2026-06-23T09:38:03.1416246Z           ]
2026-06-23T09:38:03.1416346Z         }
2026-06-23T09:38:03.1416455Z       }
2026-06-23T09:38:03.1416551Z     },
2026-06-23T09:38:03.1416656Z     {
2026-06-23T09:38:03.1416808Z       "id": "REQ-SHELL-5",
2026-06-23T09:38:03.1418091Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-23T09:38:03.1418219Z       "requiredStages": [
2026-06-23T09:38:03.1418337Z         "doc",
2026-06-23T09:38:03.1418442Z         "impl",
2026-06-23T09:38:03.1418555Z         "unit",
2026-06-23T09:38:03.1418650Z         "int"
2026-06-23T09:38:03.1418754Z       ],
2026-06-23T09:38:03.1418865Z       "stages": {
2026-06-23T09:38:03.1419036Z         "doc": {
2026-06-23T09:38:03.1419151Z           "complete": true,
2026-06-23T09:38:03.1419260Z           "evidence": [
2026-06-23T09:38:03.1419365Z             {
2026-06-23T09:38:03.1419489Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1419603Z               "line": 297
2026-06-23T09:38:03.1419709Z             }
2026-06-23T09:38:03.1419809Z           ]
2026-06-23T09:38:03.1419918Z         },
2026-06-23T09:38:03.1420023Z         "impl": {
2026-06-23T09:38:03.1420132Z           "complete": true,
2026-06-23T09:38:03.1420242Z           "evidence": [
2026-06-23T09:38:03.1420334Z             {
2026-06-23T09:38:03.1420485Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-23T09:38:03.1420595Z               "line": 262
2026-06-23T09:38:03.1420687Z             }
2026-06-23T09:38:03.1420781Z           ]
2026-06-23T09:38:03.1420877Z         },
2026-06-23T09:38:03.1420982Z         "int": {
2026-06-23T09:38:03.1421091Z           "complete": true,
2026-06-23T09:38:03.1421200Z           "evidence": [
2026-06-23T09:38:03.1421304Z             {
2026-06-23T09:38:03.1421441Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1421549Z               "line": 829
2026-06-23T09:38:03.1421646Z             },
2026-06-23T09:38:03.1421751Z             {
2026-06-23T09:38:03.1421888Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1422004Z               "line": 1292
2026-06-23T09:38:03.1422113Z             },
2026-06-23T09:38:03.1422212Z             {
2026-06-23T09:38:03.1422380Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-23T09:38:03.1422470Z               "line": 23
2026-06-23T09:38:03.1422580Z             }
2026-06-23T09:38:03.1422690Z           ]
2026-06-23T09:38:03.1422780Z         },
2026-06-23T09:38:03.1422895Z         "unit": {
2026-06-23T09:38:03.1423000Z           "complete": true,
2026-06-23T09:38:03.1423109Z           "evidence": [
2026-06-23T09:38:03.1423201Z             {
2026-06-23T09:38:03.1423353Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-23T09:38:03.1423491Z               "line": 803
2026-06-23T09:38:03.1423587Z             }
2026-06-23T09:38:03.1423700Z           ]
2026-06-23T09:38:03.1423799Z         }
2026-06-23T09:38:03.1423905Z       }
2026-06-23T09:38:03.1424131Z     },
2026-06-23T09:38:03.1424241Z     {
2026-06-23T09:38:03.1424351Z       "id": "REQ-START-1",
2026-06-23T09:38:03.1424566Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-23T09:38:03.1424689Z       "requiredStages": [
2026-06-23T09:38:03.1424794Z         "impl",
2026-06-23T09:38:03.1424919Z         "unit"
2026-06-23T09:38:03.1425118Z       ],
2026-06-23T09:38:03.1425228Z       "stages": {
2026-06-23T09:38:03.1425333Z         "doc": {
2026-06-23T09:38:03.1425447Z           "complete": false,
2026-06-23T09:38:03.1425562Z           "evidence": []
2026-06-23T09:38:03.1425653Z         },
2026-06-23T09:38:03.1425753Z         "impl": {
2026-06-23T09:38:03.1425863Z           "complete": true,
2026-06-23T09:38:03.1425982Z           "evidence": [
2026-06-23T09:38:03.1426082Z             {
2026-06-23T09:38:03.1426220Z               "path": "crates/spt-store/src/seed.rs",
2026-06-23T09:38:03.1426329Z               "line": 16
2026-06-23T09:38:03.1426431Z             }
2026-06-23T09:38:03.1426540Z           ]
2026-06-23T09:38:03.1426638Z         },
2026-06-23T09:38:03.1426753Z         "int": {
2026-06-23T09:38:03.1426859Z           "complete": false,
2026-06-23T09:38:03.1426976Z           "evidence": []
2026-06-23T09:38:03.1427068Z         },
2026-06-23T09:38:03.1427163Z         "unit": {
2026-06-23T09:38:03.1427267Z           "complete": true,
2026-06-23T09:38:03.1427368Z           "evidence": [
2026-06-23T09:38:03.1427474Z             {
2026-06-23T09:38:03.1427601Z               "path": "crates/spt-store/src/seed.rs",
2026-06-23T09:38:03.1427707Z               "line": 48
2026-06-23T09:38:03.1427807Z             },
2026-06-23T09:38:03.1427911Z             {
2026-06-23T09:38:03.1428041Z               "path": "crates/spt-store/src/seed.rs",
2026-06-23T09:38:03.1428136Z               "line": 63
2026-06-23T09:38:03.1428240Z             }
2026-06-23T09:38:03.1428347Z           ]
2026-06-23T09:38:03.1428442Z         }
2026-06-23T09:38:03.1428555Z       }
2026-06-23T09:38:03.1428651Z     },
2026-06-23T09:38:03.1428752Z     {
2026-06-23T09:38:03.1428859Z       "id": "REQ-START-2",
2026-06-23T09:38:03.1429120Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-23T09:38:03.1429229Z       "requiredStages": [
2026-06-23T09:38:03.1429334Z         "impl",
2026-06-23T09:38:03.1429440Z         "unit",
2026-06-23T09:38:03.1429572Z         "int"
2026-06-23T09:38:03.1429673Z       ],
2026-06-23T09:38:03.1429769Z       "stages": {
2026-06-23T09:38:03.1429872Z         "doc": {
2026-06-23T09:38:03.1429983Z           "complete": false,
2026-06-23T09:38:03.1430097Z           "evidence": []
2026-06-23T09:38:03.1430197Z         },
2026-06-23T09:38:03.1430298Z         "impl": {
2026-06-23T09:38:03.1430402Z           "complete": true,
2026-06-23T09:38:03.1430516Z           "evidence": [
2026-06-23T09:38:03.1430622Z             {
2026-06-23T09:38:03.1430755Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1430864Z               "line": 16
2026-06-23T09:38:03.1430966Z             },
2026-06-23T09:38:03.1431064Z             {
2026-06-23T09:38:03.1431194Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1431299Z               "line": 115
2026-06-23T09:38:03.1431408Z             },
2026-06-23T09:38:03.1431504Z             {
2026-06-23T09:38:03.1431638Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1431751Z               "line": 300
2026-06-23T09:38:03.1431851Z             }
2026-06-23T09:38:03.1431950Z           ]
2026-06-23T09:38:03.1432039Z         },
2026-06-23T09:38:03.1432148Z         "int": {
2026-06-23T09:38:03.1432254Z           "complete": true,
2026-06-23T09:38:03.1432368Z           "evidence": [
2026-06-23T09:38:03.1432468Z             {
2026-06-23T09:38:03.1432602Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:03.1432711Z               "line": 186
2026-06-23T09:38:03.1432812Z             }
2026-06-23T09:38:03.1432916Z           ]
2026-06-23T09:38:03.1433011Z         },
2026-06-23T09:38:03.1433208Z         "unit": {
2026-06-23T09:38:03.1433317Z           "complete": true,
2026-06-23T09:38:03.1433421Z           "evidence": [
2026-06-23T09:38:03.1433532Z             {
2026-06-23T09:38:03.1433660Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1433775Z               "line": 590
2026-06-23T09:38:03.1433875Z             },
2026-06-23T09:38:03.1434066Z             {
2026-06-23T09:38:03.1434195Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1434303Z               "line": 623
2026-06-23T09:38:03.1434407Z             }
2026-06-23T09:38:03.1434498Z           ]
2026-06-23T09:38:03.1434601Z         }
2026-06-23T09:38:03.1434705Z       }
2026-06-23T09:38:03.1434806Z     },
2026-06-23T09:38:03.1434906Z     {
2026-06-23T09:38:03.1435010Z       "id": "REQ-START-3",
2026-06-23T09:38:03.1435202Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-23T09:38:03.1435320Z       "requiredStages": [
2026-06-23T09:38:03.1435431Z         "impl",
2026-06-23T09:38:03.1435536Z         "unit",
2026-06-23T09:38:03.1435630Z         "int"
2026-06-23T09:38:03.1435732Z       ],
2026-06-23T09:38:03.1435831Z       "stages": {
2026-06-23T09:38:03.1435936Z         "doc": {
2026-06-23T09:38:03.1436037Z           "complete": false,
2026-06-23T09:38:03.1436146Z           "evidence": []
2026-06-23T09:38:03.1436246Z         },
2026-06-23T09:38:03.1436347Z         "impl": {
2026-06-23T09:38:03.1436470Z           "complete": true,
2026-06-23T09:38:03.1436575Z           "evidence": [
2026-06-23T09:38:03.1436681Z             {
2026-06-23T09:38:03.1436818Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:03.1436928Z               "line": 23
2026-06-23T09:38:03.1437038Z             },
2026-06-23T09:38:03.1437137Z             {
2026-06-23T09:38:03.1437279Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:03.1437419Z               "line": 205
2026-06-23T09:38:03.1437527Z             },
2026-06-23T09:38:03.1437628Z             {
2026-06-23T09:38:03.1437762Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:03.1437865Z               "line": 221
2026-06-23T09:38:03.1437967Z             },
2026-06-23T09:38:03.1438081Z             {
2026-06-23T09:38:03.1438199Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1438310Z               "line": 17
2026-06-23T09:38:03.1438405Z             },
2026-06-23T09:38:03.1438509Z             {
2026-06-23T09:38:03.1438640Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1438743Z               "line": 35
2026-06-23T09:38:03.1438848Z             },
2026-06-23T09:38:03.1439016Z             {
2026-06-23T09:38:03.1439148Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1439245Z               "line": 116
2026-06-23T09:38:03.1439349Z             }
2026-06-23T09:38:03.1439453Z           ]
2026-06-23T09:38:03.1439548Z         },
2026-06-23T09:38:03.1439653Z         "int": {
2026-06-23T09:38:03.1439756Z           "complete": true,
2026-06-23T09:38:03.1439866Z           "evidence": [
2026-06-23T09:38:03.1439961Z             {
2026-06-23T09:38:03.1440094Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-23T09:38:03.1440199Z               "line": 488
2026-06-23T09:38:03.1440304Z             }
2026-06-23T09:38:03.1440399Z           ]
2026-06-23T09:38:03.1440495Z         },
2026-06-23T09:38:03.1440595Z         "unit": {
2026-06-23T09:38:03.1440690Z           "complete": true,
2026-06-23T09:38:03.1440800Z           "evidence": [
2026-06-23T09:38:03.1440901Z             {
2026-06-23T09:38:03.1441033Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:03.1441139Z               "line": 381
2026-06-23T09:38:03.1441239Z             },
2026-06-23T09:38:03.1441343Z             {
2026-06-23T09:38:03.1441473Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:03.1441582Z               "line": 402
2026-06-23T09:38:03.1441677Z             },
2026-06-23T09:38:03.1441883Z             {
2026-06-23T09:38:03.1442021Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-23T09:38:03.1442127Z               "line": 412
2026-06-23T09:38:03.1442230Z             },
2026-06-23T09:38:03.1442330Z             {
2026-06-23T09:38:03.1442463Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1442661Z               "line": 591
2026-06-23T09:38:03.1442761Z             },
2026-06-23T09:38:03.1442862Z             {
2026-06-23T09:38:03.1442990Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1443096Z               "line": 624
2026-06-23T09:38:03.1443196Z             },
2026-06-23T09:38:03.1443290Z             {
2026-06-23T09:38:03.1443439Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1443539Z               "line": 657
2026-06-23T09:38:03.1443633Z             }
2026-06-23T09:38:03.1443735Z           ]
2026-06-23T09:38:03.1443834Z         }
2026-06-23T09:38:03.1443929Z       }
2026-06-23T09:38:03.1444025Z     },
2026-06-23T09:38:03.1444125Z     {
2026-06-23T09:38:03.1444234Z       "id": "REQ-START-4",
2026-06-23T09:38:03.1444398Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-23T09:38:03.1444496Z       "requiredStages": [
2026-06-23T09:38:03.1444602Z         "impl",
2026-06-23T09:38:03.1444699Z         "unit"
2026-06-23T09:38:03.1444806Z       ],
2026-06-23T09:38:03.1444915Z       "stages": {
2026-06-23T09:38:03.1445006Z         "doc": {
2026-06-23T09:38:03.1445123Z           "complete": false,
2026-06-23T09:38:03.1445223Z           "evidence": []
2026-06-23T09:38:03.1445323Z         },
2026-06-23T09:38:03.1445424Z         "impl": {
2026-06-23T09:38:03.1445533Z           "complete": true,
2026-06-23T09:38:03.1445643Z           "evidence": [
2026-06-23T09:38:03.1445738Z             {
2026-06-23T09:38:03.1445880Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1445982Z               "line": 585
2026-06-23T09:38:03.1446086Z             }
2026-06-23T09:38:03.1446191Z           ]
2026-06-23T09:38:03.1446297Z         },
2026-06-23T09:38:03.1446401Z         "int": {
2026-06-23T09:38:03.1446510Z           "complete": false,
2026-06-23T09:38:03.1446626Z           "evidence": []
2026-06-23T09:38:03.1446725Z         },
2026-06-23T09:38:03.1446834Z         "unit": {
2026-06-23T09:38:03.1446936Z           "complete": true,
2026-06-23T09:38:03.1447054Z           "evidence": [
2026-06-23T09:38:03.1447159Z             {
2026-06-23T09:38:03.1447293Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1447416Z               "line": 1026
2026-06-23T09:38:03.1447513Z             }
2026-06-23T09:38:03.1447613Z           ]
2026-06-23T09:38:03.1447706Z         }
2026-06-23T09:38:03.1447811Z       }
2026-06-23T09:38:03.1447911Z     },
2026-06-23T09:38:03.1447998Z     {
2026-06-23T09:38:03.1448111Z       "id": "REQ-START-5",
2026-06-23T09:38:03.1451040Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-23T09:38:03.1451184Z       "requiredStages": [
2026-06-23T09:38:03.1451293Z         "doc",
2026-06-23T09:38:03.1451390Z         "impl",
2026-06-23T09:38:03.1451589Z         "unit",
2026-06-23T09:38:03.1451689Z         "int"
2026-06-23T09:38:03.1451785Z       ],
2026-06-23T09:38:03.1451885Z       "stages": {
2026-06-23T09:38:03.1451985Z         "doc": {
2026-06-23T09:38:03.1452096Z           "complete": true,
2026-06-23T09:38:03.1452199Z           "evidence": [
2026-06-23T09:38:03.1452295Z             {
2026-06-23T09:38:03.1452508Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1452620Z               "line": 185
2026-06-23T09:38:03.1452720Z             },
2026-06-23T09:38:03.1452819Z             {
2026-06-23T09:38:03.1452971Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-23T09:38:03.1453075Z               "line": 28
2026-06-23T09:38:03.1453173Z             }
2026-06-23T09:38:03.1453273Z           ]
2026-06-23T09:38:03.1453370Z         },
2026-06-23T09:38:03.1453479Z         "impl": {
2026-06-23T09:38:03.1453578Z           "complete": true,
2026-06-23T09:38:03.1453680Z           "evidence": [
2026-06-23T09:38:03.1453784Z             {
2026-06-23T09:38:03.1453927Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.1454032Z               "line": 26
2026-06-23T09:38:03.1454132Z             },
2026-06-23T09:38:03.1454237Z             {
2026-06-23T09:38:03.1454356Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.1454470Z               "line": 212
2026-06-23T09:38:03.1454571Z             },
2026-06-23T09:38:03.1454676Z             {
2026-06-23T09:38:03.1454818Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.1454934Z               "line": 221
2026-06-23T09:38:03.1455037Z             },
2026-06-23T09:38:03.1455133Z             {
2026-06-23T09:38:03.1455263Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:03.1455362Z               "line": 485
2026-06-23T09:38:03.1455452Z             },
2026-06-23T09:38:03.1455556Z             {
2026-06-23T09:38:03.1455688Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1455802Z               "line": 36
2026-06-23T09:38:03.1455903Z             },
2026-06-23T09:38:03.1456008Z             {
2026-06-23T09:38:03.1456135Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1456251Z               "line": 118
2026-06-23T09:38:03.1456360Z             },
2026-06-23T09:38:03.1456460Z             {
2026-06-23T09:38:03.1456589Z               "path": "crates/spt/src/api/startup.rs",
2026-06-23T09:38:03.1456694Z               "line": 329
2026-06-23T09:38:03.1456804Z             }
2026-06-23T09:38:03.1456909Z           ]
2026-06-23T09:38:03.1457009Z         },
2026-06-23T09:38:03.1461625Z         "int": {
2026-06-23T09:38:03.1461782Z           "complete": true,
2026-06-23T09:38:03.1461891Z           "evidence": [
2026-06-23T09:38:03.1461997Z             {
2026-06-23T09:38:03.1462163Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-23T09:38:03.1462269Z               "line": 17
2026-06-23T09:38:03.1462378Z             }
2026-06-23T09:38:03.1462483Z           ]
2026-06-23T09:38:03.1462594Z         },
2026-06-23T09:38:03.1462702Z         "unit": {
2026-06-23T09:38:03.1462812Z           "complete": true,
2026-06-23T09:38:03.1462932Z           "evidence": [
2026-06-23T09:38:03.1463031Z             {
2026-06-23T09:38:03.1463194Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.1463314Z               "line": 358
2026-06-23T09:38:03.1463407Z             },
2026-06-23T09:38:03.1463516Z             {
2026-06-23T09:38:03.1463659Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-23T09:38:03.1463766Z               "line": 371
2026-06-23T09:38:03.1463867Z             },
2026-06-23T09:38:03.1463972Z             {
2026-06-23T09:38:03.1464105Z               "path": "crates/spt/src/api/mod.rs",
2026-06-23T09:38:03.1464211Z               "line": 597
2026-06-23T09:38:03.1464306Z             }
2026-06-23T09:38:03.1464400Z           ]
2026-06-23T09:38:03.1464507Z         }
2026-06-23T09:38:03.1464787Z       }
2026-06-23T09:38:03.1464879Z     },
2026-06-23T09:38:03.1464983Z     {
2026-06-23T09:38:03.1465093Z       "id": "REQ-STORE-1",
2026-06-23T09:38:03.1465983Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-23T09:38:03.1466207Z       "requiredStages": [
2026-06-23T09:38:03.1466305Z         "impl",
2026-06-23T09:38:03.1466415Z         "unit"
2026-06-23T09:38:03.1466506Z       ],
2026-06-23T09:38:03.1466610Z       "stages": {
2026-06-23T09:38:03.1466710Z         "doc": {
2026-06-23T09:38:03.1466825Z           "complete": false,
2026-06-23T09:38:03.1466939Z           "evidence": []
2026-06-23T09:38:03.1467039Z         },
2026-06-23T09:38:03.1467145Z         "impl": {
2026-06-23T09:38:03.1467249Z           "complete": true,
2026-06-23T09:38:03.1467364Z           "evidence": [
2026-06-23T09:38:03.1467460Z             {
2026-06-23T09:38:03.1467626Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1467751Z               "line": 23
2026-06-23T09:38:03.1467855Z             },
2026-06-23T09:38:03.1467955Z             {
2026-06-23T09:38:03.1468090Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1468203Z               "line": 46
2026-06-23T09:38:03.1468308Z             },
2026-06-23T09:38:03.1468414Z             {
2026-06-23T09:38:03.1468551Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1468662Z               "line": 97
2026-06-23T09:38:03.1468771Z             },
2026-06-23T09:38:03.1468884Z             {
2026-06-23T09:38:03.1469170Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1469289Z               "line": 125
2026-06-23T09:38:03.1469399Z             },
2026-06-23T09:38:03.1469508Z             {
2026-06-23T09:38:03.1469681Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1469804Z               "line": 207
2026-06-23T09:38:03.1469899Z             },
2026-06-23T09:38:03.1470010Z             {
2026-06-23T09:38:03.1470156Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1470253Z               "line": 231
2026-06-23T09:38:03.1470362Z             },
2026-06-23T09:38:03.1470453Z             {
2026-06-23T09:38:03.1470602Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1470705Z               "line": 467
2026-06-23T09:38:03.1470815Z             },
2026-06-23T09:38:03.1470916Z             {
2026-06-23T09:38:03.1471067Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1471167Z               "line": 25
2026-06-23T09:38:03.1471267Z             },
2026-06-23T09:38:03.1471365Z             {
2026-06-23T09:38:03.1471512Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1471623Z               "line": 120
2026-06-23T09:38:03.1471727Z             },
2026-06-23T09:38:03.1471822Z             {
2026-06-23T09:38:03.1471966Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1472065Z               "line": 148
2026-06-23T09:38:03.1472170Z             },
2026-06-23T09:38:03.1472271Z             {
2026-06-23T09:38:03.1472418Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1472529Z               "line": 165
2026-06-23T09:38:03.1472624Z             },
2026-06-23T09:38:03.1472723Z             {
2026-06-23T09:38:03.1472863Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1472976Z               "line": 180
2026-06-23T09:38:03.1473071Z             },
2026-06-23T09:38:03.1473168Z             {
2026-06-23T09:38:03.1473319Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1473425Z               "line": 198
2026-06-23T09:38:03.1473530Z             },
2026-06-23T09:38:03.1473730Z             {
2026-06-23T09:38:03.1473883Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1473991Z               "line": 207
2026-06-23T09:38:03.1474091Z             },
2026-06-23T09:38:03.1474191Z             {
2026-06-23T09:38:03.1474322Z               "path": "crates/spt-store/src/project.rs",
2026-06-23T09:38:03.1474528Z               "line": 16
2026-06-23T09:38:03.1474632Z             },
2026-06-23T09:38:03.1474727Z             {
2026-06-23T09:38:03.1474857Z               "path": "crates/spt-store/src/project.rs",
2026-06-23T09:38:03.1474966Z               "line": 63
2026-06-23T09:38:03.1475072Z             }
2026-06-23T09:38:03.1475167Z           ]
2026-06-23T09:38:03.1475271Z         },
2026-06-23T09:38:03.1475371Z         "int": {
2026-06-23T09:38:03.1475486Z           "complete": false,
2026-06-23T09:38:03.1475595Z           "evidence": []
2026-06-23T09:38:03.1475696Z         },
2026-06-23T09:38:03.1475801Z         "unit": {
2026-06-23T09:38:03.1475915Z           "complete": true,
2026-06-23T09:38:03.1476031Z           "evidence": [
2026-06-23T09:38:03.1476126Z             {
2026-06-23T09:38:03.1476268Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1476369Z               "line": 584
2026-06-23T09:38:03.1476478Z             },
2026-06-23T09:38:03.1476577Z             {
2026-06-23T09:38:03.1476715Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1476823Z               "line": 594
2026-06-23T09:38:03.1476922Z             },
2026-06-23T09:38:03.1477027Z             {
2026-06-23T09:38:03.1477161Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1477280Z               "line": 616
2026-06-23T09:38:03.1477386Z             },
2026-06-23T09:38:03.1477481Z             {
2026-06-23T09:38:03.1477619Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1477724Z               "line": 632
2026-06-23T09:38:03.1477828Z             },
2026-06-23T09:38:03.1477939Z             {
2026-06-23T09:38:03.1478071Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-23T09:38:03.1478181Z               "line": 690
2026-06-23T09:38:03.1478273Z             },
2026-06-23T09:38:03.1478377Z             {
2026-06-23T09:38:03.1478515Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1478626Z               "line": 472
2026-06-23T09:38:03.1478724Z             },
2026-06-23T09:38:03.1478815Z             {
2026-06-23T09:38:03.1479035Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-23T09:38:03.1479135Z               "line": 507
2026-06-23T09:38:03.1479227Z             },
2026-06-23T09:38:03.1479326Z             {
2026-06-23T09:38:03.1479449Z               "path": "crates/spt-store/src/project.rs",
2026-06-23T09:38:03.1479563Z               "line": 120
2026-06-23T09:38:03.1479660Z             },
2026-06-23T09:38:03.1479763Z             {
2026-06-23T09:38:03.1479892Z               "path": "crates/spt-store/src/project.rs",
2026-06-23T09:38:03.1479998Z               "line": 128
2026-06-23T09:38:03.1480097Z             }
2026-06-23T09:38:03.1480203Z           ]
2026-06-23T09:38:03.1480307Z         }
2026-06-23T09:38:03.1480407Z       }
2026-06-23T09:38:03.1480512Z     },
2026-06-23T09:38:03.1480612Z     {
2026-06-23T09:38:03.1480726Z       "id": "REQ-SUBNET-1",
2026-06-23T09:38:03.1481075Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-23T09:38:03.1481190Z       "requiredStages": [
2026-06-23T09:38:03.1481298Z         "impl",
2026-06-23T09:38:03.1481394Z         "unit"
2026-06-23T09:38:03.1481501Z       ],
2026-06-23T09:38:03.1481603Z       "stages": {
2026-06-23T09:38:03.1481707Z         "doc": {
2026-06-23T09:38:03.1481822Z           "complete": false,
2026-06-23T09:38:03.1481925Z           "evidence": []
2026-06-23T09:38:03.1482034Z         },
2026-06-23T09:38:03.1482130Z         "impl": {
2026-06-23T09:38:03.1482349Z           "complete": true,
2026-06-23T09:38:03.1482454Z           "evidence": [
2026-06-23T09:38:03.1482559Z             {
2026-06-23T09:38:03.1482721Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1482836Z               "line": 281
2026-06-23T09:38:03.1482954Z             },
2026-06-23T09:38:03.1483155Z             {
2026-06-23T09:38:03.1483326Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1483446Z               "line": 651
2026-06-23T09:38:03.1483541Z             },
2026-06-23T09:38:03.1483646Z             {
2026-06-23T09:38:03.1483771Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1483889Z               "line": 4054
2026-06-23T09:38:03.1483980Z             },
2026-06-23T09:38:03.1484086Z             {
2026-06-23T09:38:03.1484204Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1484310Z               "line": 4364
2026-06-23T09:38:03.1484410Z             },
2026-06-23T09:38:03.1484523Z             {
2026-06-23T09:38:03.1484646Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1484746Z               "line": 4383
2026-06-23T09:38:03.1484845Z             },
2026-06-23T09:38:03.1484934Z             {
2026-06-23T09:38:03.1485050Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1485154Z               "line": 4447
2026-06-23T09:38:03.1485259Z             },
2026-06-23T09:38:03.1485360Z             {
2026-06-23T09:38:03.1485479Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1485578Z               "line": 4489
2026-06-23T09:38:03.1485679Z             },
2026-06-23T09:38:03.1485784Z             {
2026-06-23T09:38:03.1485908Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1486023Z               "line": 4678
2026-06-23T09:38:03.1486127Z             },
2026-06-23T09:38:03.1486232Z             {
2026-06-23T09:38:03.1486357Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1486466Z               "line": 4748
2026-06-23T09:38:03.1486571Z             },
2026-06-23T09:38:03.1486681Z             {
2026-06-23T09:38:03.1486800Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1486906Z               "line": 4972
2026-06-23T09:38:03.1487005Z             },
2026-06-23T09:38:03.1487113Z             {
2026-06-23T09:38:03.1487232Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1487332Z               "line": 5616
2026-06-23T09:38:03.1487425Z             },
2026-06-23T09:38:03.1487525Z             {
2026-06-23T09:38:03.1487650Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.1487759Z               "line": 418
2026-06-23T09:38:03.1487864Z             }
2026-06-23T09:38:03.1487955Z           ]
2026-06-23T09:38:03.1488060Z         },
2026-06-23T09:38:03.1488164Z         "int": {
2026-06-23T09:38:03.1488275Z           "complete": false,
2026-06-23T09:38:03.1488388Z           "evidence": []
2026-06-23T09:38:03.1488479Z         },
2026-06-23T09:38:03.1488589Z         "unit": {
2026-06-23T09:38:03.1488699Z           "complete": true,
2026-06-23T09:38:03.1488808Z           "evidence": [
2026-06-23T09:38:03.1488914Z             {
2026-06-23T09:38:03.1489138Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1489252Z               "line": 1584
2026-06-23T09:38:03.1489343Z             },
2026-06-23T09:38:03.1489458Z             {
2026-06-23T09:38:03.1489590Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1489704Z               "line": 11502
2026-06-23T09:38:03.1489815Z             },
2026-06-23T09:38:03.1489901Z             {
2026-06-23T09:38:03.1490018Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1490123Z               "line": 11672
2026-06-23T09:38:03.1490220Z             },
2026-06-23T09:38:03.1490318Z             {
2026-06-23T09:38:03.1490433Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1490543Z               "line": 11679
2026-06-23T09:38:03.1490633Z             },
2026-06-23T09:38:03.1490848Z             {
2026-06-23T09:38:03.1490967Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1491073Z               "line": 11732
2026-06-23T09:38:03.1491172Z             },
2026-06-23T09:38:03.1491272Z             {
2026-06-23T09:38:03.1491397Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1491601Z               "line": 11749
2026-06-23T09:38:03.1491698Z             },
2026-06-23T09:38:03.1491797Z             {
2026-06-23T09:38:03.1491920Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1492027Z               "line": 11779
2026-06-23T09:38:03.1492131Z             },
2026-06-23T09:38:03.1492235Z             {
2026-06-23T09:38:03.1492344Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1492448Z               "line": 11895
2026-06-23T09:38:03.1492542Z             },
2026-06-23T09:38:03.1492642Z             {
2026-06-23T09:38:03.1492748Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1492866Z               "line": 12046
2026-06-23T09:38:03.1492971Z             }
2026-06-23T09:38:03.1493067Z           ]
2026-06-23T09:38:03.1493171Z         }
2026-06-23T09:38:03.1493266Z       }
2026-06-23T09:38:03.1493372Z     },
2026-06-23T09:38:03.1493458Z     {
2026-06-23T09:38:03.1493567Z       "id": "REQ-SUBNET-2",
2026-06-23T09:38:03.1493820Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-23T09:38:03.1493925Z       "requiredStages": [
2026-06-23T09:38:03.1494030Z         "impl",
2026-06-23T09:38:03.1494130Z         "unit",
2026-06-23T09:38:03.1494230Z         "int"
2026-06-23T09:38:03.1494322Z       ],
2026-06-23T09:38:03.1494430Z       "stages": {
2026-06-23T09:38:03.1494535Z         "doc": {
2026-06-23T09:38:03.1494641Z           "complete": true,
2026-06-23T09:38:03.1494754Z           "evidence": [
2026-06-23T09:38:03.1494850Z             {
2026-06-23T09:38:03.1495026Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-23T09:38:03.1495135Z               "line": 60
2026-06-23T09:38:03.1495240Z             }
2026-06-23T09:38:03.1495348Z           ]
2026-06-23T09:38:03.1495438Z         },
2026-06-23T09:38:03.1495543Z         "impl": {
2026-06-23T09:38:03.1495644Z           "complete": true,
2026-06-23T09:38:03.1495757Z           "evidence": [
2026-06-23T09:38:03.1495853Z             {
2026-06-23T09:38:03.1495996Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.1496105Z               "line": 1008
2026-06-23T09:38:03.1496207Z             },
2026-06-23T09:38:03.1496306Z             {
2026-06-23T09:38:03.1496443Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1496554Z               "line": 2099
2026-06-23T09:38:03.1496654Z             },
2026-06-23T09:38:03.1496758Z             {
2026-06-23T09:38:03.1496902Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.1497006Z               "line": 633
2026-06-23T09:38:03.1497117Z             },
2026-06-23T09:38:03.1497217Z             {
2026-06-23T09:38:03.1497374Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-23T09:38:03.1497480Z               "line": 817
2026-06-23T09:38:03.1497593Z             },
2026-06-23T09:38:03.1497711Z             {
2026-06-23T09:38:03.1497844Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1497957Z               "line": 26
2026-06-23T09:38:03.1498047Z             },
2026-06-23T09:38:03.1498143Z             {
2026-06-23T09:38:03.1498286Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1498386Z               "line": 60
2026-06-23T09:38:03.1498492Z             },
2026-06-23T09:38:03.1498587Z             {
2026-06-23T09:38:03.1498720Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1498820Z               "line": 168
2026-06-23T09:38:03.1498930Z             },
2026-06-23T09:38:03.1499097Z             {
2026-06-23T09:38:03.1499235Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1499502Z               "line": 295
2026-06-23T09:38:03.1499602Z             },
2026-06-23T09:38:03.1499708Z             {
2026-06-23T09:38:03.1499841Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1499950Z               "line": 417
2026-06-23T09:38:03.1500066Z             },
2026-06-23T09:38:03.1500255Z             {
2026-06-23T09:38:03.1500409Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-23T09:38:03.1500512Z               "line": 252
2026-06-23T09:38:03.1500612Z             },
2026-06-23T09:38:03.1500702Z             {
2026-06-23T09:38:03.1500832Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1500941Z               "line": 4410
2026-06-23T09:38:03.1501032Z             },
2026-06-23T09:38:03.1501142Z             {
2026-06-23T09:38:03.1501255Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1501366Z               "line": 4911
2026-06-23T09:38:03.1501462Z             },
2026-06-23T09:38:03.1501560Z             {
2026-06-23T09:38:03.1501690Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1501785Z               "line": 5547
2026-06-23T09:38:03.1501890Z             }
2026-06-23T09:38:03.1501981Z           ]
2026-06-23T09:38:03.1502085Z         },
2026-06-23T09:38:03.1502185Z         "int": {
2026-06-23T09:38:03.1502301Z           "complete": true,
2026-06-23T09:38:03.1502409Z           "evidence": [
2026-06-23T09:38:03.1502500Z             {
2026-06-23T09:38:03.1502649Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-23T09:38:03.1502747Z               "line": 22
2026-06-23T09:38:03.1502851Z             },
2026-06-23T09:38:03.1502933Z             {
2026-06-23T09:38:03.1503074Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1503182Z               "line": 647
2026-06-23T09:38:03.1503279Z             },
2026-06-23T09:38:03.1503375Z             {
2026-06-23T09:38:03.1503497Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1503613Z               "line": 889
2026-06-23T09:38:03.1503708Z             }
2026-06-23T09:38:03.1503793Z           ]
2026-06-23T09:38:03.1503885Z         },
2026-06-23T09:38:03.1503985Z         "unit": {
2026-06-23T09:38:03.1504094Z           "complete": true,
2026-06-23T09:38:03.1504190Z           "evidence": [
2026-06-23T09:38:03.1504299Z             {
2026-06-23T09:38:03.1504432Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1504543Z               "line": 586
2026-06-23T09:38:03.1504647Z             },
2026-06-23T09:38:03.1504747Z             {
2026-06-23T09:38:03.1504868Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1504971Z               "line": 11542
2026-06-23T09:38:03.1505071Z             },
2026-06-23T09:38:03.1505163Z             {
2026-06-23T09:38:03.1505281Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1505386Z               "line": 12253
2026-06-23T09:38:03.1505483Z             }
2026-06-23T09:38:03.1505591Z           ]
2026-06-23T09:38:03.1505691Z         }
2026-06-23T09:38:03.1505795Z       }
2026-06-23T09:38:03.1505885Z     },
2026-06-23T09:38:03.1505989Z     {
2026-06-23T09:38:03.1506107Z       "id": "REQ-SUBNET-3",
2026-06-23T09:38:03.1506398Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-23T09:38:03.1506518Z       "requiredStages": [
2026-06-23T09:38:03.1506622Z         "impl",
2026-06-23T09:38:03.1506728Z         "unit"
2026-06-23T09:38:03.1506833Z       ],
2026-06-23T09:38:03.1506942Z       "stages": {
2026-06-23T09:38:03.1507047Z         "doc": {
2026-06-23T09:38:03.1507157Z           "complete": false,
2026-06-23T09:38:03.1507266Z           "evidence": []
2026-06-23T09:38:03.1507357Z         },
2026-06-23T09:38:03.1507462Z         "impl": {
2026-06-23T09:38:03.1507562Z           "complete": true,
2026-06-23T09:38:03.1507677Z           "evidence": [
2026-06-23T09:38:03.1507782Z             {
2026-06-23T09:38:03.1508011Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1508125Z               "line": 152
2026-06-23T09:38:03.1508229Z             },
2026-06-23T09:38:03.1508333Z             {
2026-06-23T09:38:03.1508470Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1508569Z               "line": 299
2026-06-23T09:38:03.1508737Z             },
2026-06-23T09:38:03.1508827Z             {
2026-06-23T09:38:03.1509037Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1509138Z               "line": 443
2026-06-23T09:38:03.1509246Z             },
2026-06-23T09:38:03.1509343Z             {
2026-06-23T09:38:03.1509476Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1509614Z               "line": 532
2026-06-23T09:38:03.1509714Z             },
2026-06-23T09:38:03.1509819Z             {
2026-06-23T09:38:03.1509948Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1510067Z               "line": 125
2026-06-23T09:38:03.1510162Z             },
2026-06-23T09:38:03.1510263Z             {
2026-06-23T09:38:03.1510401Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1510496Z               "line": 253
2026-06-23T09:38:03.1510588Z             },
2026-06-23T09:38:03.1510682Z             {
2026-06-23T09:38:03.1510825Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1510936Z               "line": 264
2026-06-23T09:38:03.1511039Z             },
2026-06-23T09:38:03.1511143Z             {
2026-06-23T09:38:03.1511263Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1511373Z               "line": 285
2026-06-23T09:38:03.1511467Z             },
2026-06-23T09:38:03.1511559Z             {
2026-06-23T09:38:03.1511693Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1511796Z               "line": 621
2026-06-23T09:38:03.1511888Z             },
2026-06-23T09:38:03.1511978Z             {
2026-06-23T09:38:03.1512120Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1512226Z               "line": 680
2026-06-23T09:38:03.1512326Z             },
2026-06-23T09:38:03.1512430Z             {
2026-06-23T09:38:03.1512570Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.1512679Z               "line": 61
2026-06-23T09:38:03.1512779Z             },
2026-06-23T09:38:03.1512880Z             {
2026-06-23T09:38:03.1513017Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.1513127Z               "line": 90
2026-06-23T09:38:03.1513233Z             },
2026-06-23T09:38:03.1513331Z             {
2026-06-23T09:38:03.1513465Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.1513564Z               "line": 125
2026-06-23T09:38:03.1513662Z             },
2026-06-23T09:38:03.1513757Z             {
2026-06-23T09:38:03.1513897Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-23T09:38:03.1514005Z               "line": 9
2026-06-23T09:38:03.1514106Z             },
2026-06-23T09:38:03.1514206Z             {
2026-06-23T09:38:03.1514325Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1514435Z               "line": 4748
2026-06-23T09:38:03.1514540Z             },
2026-06-23T09:38:03.1514639Z             {
2026-06-23T09:38:03.1514769Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.1514864Z               "line": 445
2026-06-23T09:38:03.1514968Z             }
2026-06-23T09:38:03.1515060Z           ]
2026-06-23T09:38:03.1515160Z         },
2026-06-23T09:38:03.1515264Z         "int": {
2026-06-23T09:38:03.1515375Z           "complete": false,
2026-06-23T09:38:03.1515480Z           "evidence": []
2026-06-23T09:38:03.1515579Z         },
2026-06-23T09:38:03.1515680Z         "unit": {
2026-06-23T09:38:03.1515776Z           "complete": true,
2026-06-23T09:38:03.1515889Z           "evidence": [
2026-06-23T09:38:03.1516086Z             {
2026-06-23T09:38:03.1516222Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1516337Z               "line": 1356
2026-06-23T09:38:03.1516436Z             },
2026-06-23T09:38:03.1516553Z             {
2026-06-23T09:38:03.1516692Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1516892Z               "line": 1713
2026-06-23T09:38:03.1516992Z             },
2026-06-23T09:38:03.1517092Z             {
2026-06-23T09:38:03.1517230Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.1517327Z               "line": 896
2026-06-23T09:38:03.1517431Z             },
2026-06-23T09:38:03.1517535Z             {
2026-06-23T09:38:03.1517680Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1517789Z               "line": 991
2026-06-23T09:38:03.1517888Z             },
2026-06-23T09:38:03.1517985Z             {
2026-06-23T09:38:03.1518117Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1518227Z               "line": 1041
2026-06-23T09:38:03.1518328Z             },
2026-06-23T09:38:03.1518432Z             {
2026-06-23T09:38:03.1518567Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1518671Z               "line": 1100
2026-06-23T09:38:03.1518779Z             },
2026-06-23T09:38:03.1518884Z             {
2026-06-23T09:38:03.1519096Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-23T09:38:03.1519191Z               "line": 234
2026-06-23T09:38:03.1519307Z             },
2026-06-23T09:38:03.1519421Z             {
2026-06-23T09:38:03.1519554Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-23T09:38:03.1519669Z               "line": 49
2026-06-23T09:38:03.1519764Z             },
2026-06-23T09:38:03.1519874Z             {
2026-06-23T09:38:03.1519993Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1520097Z               "line": 11895
2026-06-23T09:38:03.1520194Z             },
2026-06-23T09:38:03.1520298Z             {
2026-06-23T09:38:03.1520422Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1520528Z               "line": 12001
2026-06-23T09:38:03.1520622Z             },
2026-06-23T09:38:03.1520713Z             {
2026-06-23T09:38:03.1520828Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1520937Z               "line": 12219
2026-06-23T09:38:03.1521032Z             }
2026-06-23T09:38:03.1521128Z           ]
2026-06-23T09:38:03.1521228Z         }
2026-06-23T09:38:03.1521323Z       }
2026-06-23T09:38:03.1521424Z     },
2026-06-23T09:38:03.1521515Z     {
2026-06-23T09:38:03.1521627Z       "id": "REQ-SUBNET-4",
2026-06-23T09:38:03.1521924Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-23T09:38:03.1522041Z       "requiredStages": [
2026-06-23T09:38:03.1522143Z         "impl",
2026-06-23T09:38:03.1522238Z         "unit"
2026-06-23T09:38:03.1522337Z       ],
2026-06-23T09:38:03.1522434Z       "stages": {
2026-06-23T09:38:03.1522539Z         "doc": {
2026-06-23T09:38:03.1522647Z           "complete": true,
2026-06-23T09:38:03.1522753Z           "evidence": [
2026-06-23T09:38:03.1522853Z             {
2026-06-23T09:38:03.1523029Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-23T09:38:03.1523139Z               "line": 60
2026-06-23T09:38:03.1523229Z             }
2026-06-23T09:38:03.1523334Z           ]
2026-06-23T09:38:03.1523430Z         },
2026-06-23T09:38:03.1523539Z         "impl": {
2026-06-23T09:38:03.1523644Z           "complete": true,
2026-06-23T09:38:03.1523750Z           "evidence": [
2026-06-23T09:38:03.1523859Z             {
2026-06-23T09:38:03.1523968Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1524072Z               "line": 4054
2026-06-23T09:38:03.1524166Z             },
2026-06-23T09:38:03.1524279Z             {
2026-06-23T09:38:03.1524394Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1524608Z               "line": 5514
2026-06-23T09:38:03.1524714Z             },
2026-06-23T09:38:03.1524814Z             {
2026-06-23T09:38:03.1524937Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1525039Z               "line": 5547
2026-06-23T09:38:03.1525139Z             }
2026-06-23T09:38:03.1525238Z           ]
2026-06-23T09:38:03.1525458Z         },
2026-06-23T09:38:03.1525562Z         "int": {
2026-06-23T09:38:03.1525668Z           "complete": false,
2026-06-23T09:38:03.1525777Z           "evidence": []
2026-06-23T09:38:03.1525867Z         },
2026-06-23T09:38:03.1525973Z         "unit": {
2026-06-23T09:38:03.1526082Z           "complete": true,
2026-06-23T09:38:03.1526196Z           "evidence": [
2026-06-23T09:38:03.1526303Z             {
2026-06-23T09:38:03.1526420Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1526531Z               "line": 11658
2026-06-23T09:38:03.1526617Z             },
2026-06-23T09:38:03.1526721Z             {
2026-06-23T09:38:03.1526844Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1526954Z               "line": 11732
2026-06-23T09:38:03.1527057Z             }
2026-06-23T09:38:03.1527156Z           ]
2026-06-23T09:38:03.1527257Z         }
2026-06-23T09:38:03.1527353Z       }
2026-06-23T09:38:03.1527456Z     },
2026-06-23T09:38:03.1527557Z     {
2026-06-23T09:38:03.1527682Z       "id": "REQ-SUBNET-5",
2026-06-23T09:38:03.1529083Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-23T09:38:03.1529199Z       "requiredStages": [
2026-06-23T09:38:03.1529316Z         "impl",
2026-06-23T09:38:03.1529415Z         "unit",
2026-06-23T09:38:03.1529516Z         "int"
2026-06-23T09:38:03.1529623Z       ],
2026-06-23T09:38:03.1529727Z       "stages": {
2026-06-23T09:38:03.1529833Z         "doc": {
2026-06-23T09:38:03.1529933Z           "complete": false,
2026-06-23T09:38:03.1530047Z           "evidence": []
2026-06-23T09:38:03.1530149Z         },
2026-06-23T09:38:03.1530253Z         "impl": {
2026-06-23T09:38:03.1530366Z           "complete": true,
2026-06-23T09:38:03.1530478Z           "evidence": [
2026-06-23T09:38:03.1530582Z             {
2026-06-23T09:38:03.1530715Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-23T09:38:03.1530825Z               "line": 128
2026-06-23T09:38:03.1530925Z             },
2026-06-23T09:38:03.1531029Z             {
2026-06-23T09:38:03.1531173Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-23T09:38:03.1531273Z               "line": 413
2026-06-23T09:38:03.1531374Z             },
2026-06-23T09:38:03.1531469Z             {
2026-06-23T09:38:03.1531606Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1531717Z               "line": 74
2026-06-23T09:38:03.1531812Z             },
2026-06-23T09:38:03.1531912Z             {
2026-06-23T09:38:03.1532047Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:03.1532145Z               "line": 332
2026-06-23T09:38:03.1532249Z             },
2026-06-23T09:38:03.1532344Z             {
2026-06-23T09:38:03.1532479Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:03.1532587Z               "line": 621
2026-06-23T09:38:03.1532693Z             },
2026-06-23T09:38:03.1532784Z             {
2026-06-23T09:38:03.1532930Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T09:38:03.1533023Z               "line": 31
2026-06-23T09:38:03.1533122Z             },
2026-06-23T09:38:03.1533212Z             {
2026-06-23T09:38:03.1533347Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T09:38:03.1533456Z               "line": 50
2026-06-23T09:38:03.1533546Z             },
2026-06-23T09:38:03.1533761Z             {
2026-06-23T09:38:03.1533899Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T09:38:03.1534005Z               "line": 69
2026-06-23T09:38:03.1534099Z             },
2026-06-23T09:38:03.1534199Z             {
2026-06-23T09:38:03.1534334Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T09:38:03.1534532Z               "line": 113
2026-06-23T09:38:03.1534637Z             },
2026-06-23T09:38:03.1534731Z             {
2026-06-23T09:38:03.1534873Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-23T09:38:03.1534974Z               "line": 25
2026-06-23T09:38:03.1535069Z             },
2026-06-23T09:38:03.1535178Z             {
2026-06-23T09:38:03.1535313Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-23T09:38:03.1535417Z               "line": 34
2026-06-23T09:38:03.1535512Z             },
2026-06-23T09:38:03.1535618Z             {
2026-06-23T09:38:03.1535746Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-23T09:38:03.1535861Z               "line": 17
2026-06-23T09:38:03.1535956Z             },
2026-06-23T09:38:03.1536046Z             {
2026-06-23T09:38:03.1536175Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1536276Z               "line": 5472
2026-06-23T09:38:03.1536385Z             },
2026-06-23T09:38:03.1536490Z             {
2026-06-23T09:38:03.1536614Z               "path": "crates/spt/src/wansend.rs",
2026-06-23T09:38:03.1536723Z               "line": 419
2026-06-23T09:38:03.1536820Z             }
2026-06-23T09:38:03.1536924Z           ]
2026-06-23T09:38:03.1537024Z         },
2026-06-23T09:38:03.1537125Z         "int": {
2026-06-23T09:38:03.1537239Z           "complete": true,
2026-06-23T09:38:03.1537337Z           "evidence": [
2026-06-23T09:38:03.1537437Z             {
2026-06-23T09:38:03.1537570Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.1537683Z               "line": 825
2026-06-23T09:38:03.1542090Z             }
2026-06-23T09:38:03.1542249Z           ]
2026-06-23T09:38:03.1542358Z         },
2026-06-23T09:38:03.1542462Z         "unit": {
2026-06-23T09:38:03.1542578Z           "complete": true,
2026-06-23T09:38:03.1542687Z           "evidence": [
2026-06-23T09:38:03.1542800Z             {
2026-06-23T09:38:03.1542948Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:03.1543053Z               "line": 341
2026-06-23T09:38:03.1543162Z             },
2026-06-23T09:38:03.1543258Z             {
2026-06-23T09:38:03.1543396Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-23T09:38:03.1543500Z               "line": 1115
2026-06-23T09:38:03.1543616Z             },
2026-06-23T09:38:03.1543716Z             {
2026-06-23T09:38:03.1543863Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-23T09:38:03.1543978Z               "line": 151
2026-06-23T09:38:03.1544077Z             },
2026-06-23T09:38:03.1544169Z             {
2026-06-23T09:38:03.1544311Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-23T09:38:03.1544421Z               "line": 61
2026-06-23T09:38:03.1544518Z             },
2026-06-23T09:38:03.1544617Z             {
2026-06-23T09:38:03.1544764Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-23T09:38:03.1544866Z               "line": 111
2026-06-23T09:38:03.1544964Z             },
2026-06-23T09:38:03.1545059Z             {
2026-06-23T09:38:03.1545207Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-23T09:38:03.1545310Z               "line": 138
2026-06-23T09:38:03.1545399Z             },
2026-06-23T09:38:03.1545505Z             {
2026-06-23T09:38:03.1545639Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-23T09:38:03.1545748Z               "line": 148
2026-06-23T09:38:03.1545849Z             },
2026-06-23T09:38:03.1545953Z             {
2026-06-23T09:38:03.1546062Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1546178Z               "line": 11559
2026-06-23T09:38:03.1546421Z             }
2026-06-23T09:38:03.1546526Z           ]
2026-06-23T09:38:03.1546635Z         }
2026-06-23T09:38:03.1546721Z       }
2026-06-23T09:38:03.1546807Z     },
2026-06-23T09:38:03.1546893Z     {
2026-06-23T09:38:03.1546997Z       "id": "REQ-SUBNET-6",
2026-06-23T09:38:03.1547685Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-23T09:38:03.1547879Z       "requiredStages": [
2026-06-23T09:38:03.1547969Z         "impl",
2026-06-23T09:38:03.1548051Z         "unit"
2026-06-23T09:38:03.1548140Z       ],
2026-06-23T09:38:03.1548224Z       "stages": {
2026-06-23T09:38:03.1548310Z         "doc": {
2026-06-23T09:38:03.1548411Z           "complete": false,
2026-06-23T09:38:03.1548501Z           "evidence": []
2026-06-23T09:38:03.1548586Z         },
2026-06-23T09:38:03.1548678Z         "impl": {
2026-06-23T09:38:03.1548778Z           "complete": true,
2026-06-23T09:38:03.1548877Z           "evidence": [
2026-06-23T09:38:03.1549031Z             {
2026-06-23T09:38:03.1549173Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1549287Z               "line": 254
2026-06-23T09:38:03.1549369Z             },
2026-06-23T09:38:03.1549449Z             {
2026-06-23T09:38:03.1549588Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1549689Z               "line": 5130
2026-06-23T09:38:03.1549769Z             },
2026-06-23T09:38:03.1549845Z             {
2026-06-23T09:38:03.1549947Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1550037Z               "line": 5147
2026-06-23T09:38:03.1550121Z             },
2026-06-23T09:38:03.1550208Z             {
2026-06-23T09:38:03.1550319Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1550403Z               "line": 5200
2026-06-23T09:38:03.1550493Z             },
2026-06-23T09:38:03.1550579Z             {
2026-06-23T09:38:03.1550688Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1550781Z               "line": 5223
2026-06-23T09:38:03.1550862Z             }
2026-06-23T09:38:03.1550948Z           ]
2026-06-23T09:38:03.1551036Z         },
2026-06-23T09:38:03.1551119Z         "int": {
2026-06-23T09:38:03.1551225Z           "complete": false,
2026-06-23T09:38:03.1551311Z           "evidence": []
2026-06-23T09:38:03.1551397Z         },
2026-06-23T09:38:03.1551487Z         "unit": {
2026-06-23T09:38:03.1551588Z           "complete": true,
2026-06-23T09:38:03.1551668Z           "evidence": [
2026-06-23T09:38:03.1551754Z             {
2026-06-23T09:38:03.1551855Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1551941Z               "line": 11573
2026-06-23T09:38:03.1552016Z             },
2026-06-23T09:38:03.1552112Z             {
2026-06-23T09:38:03.1552218Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1552307Z               "line": 11606
2026-06-23T09:38:03.1552397Z             },
2026-06-23T09:38:03.1552479Z             {
2026-06-23T09:38:03.1552576Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1552659Z               "line": 11615
2026-06-23T09:38:03.1552741Z             }
2026-06-23T09:38:03.1552828Z           ]
2026-06-23T09:38:03.1552923Z         }
2026-06-23T09:38:03.1553008Z       }
2026-06-23T09:38:03.1553085Z     },
2026-06-23T09:38:03.1553172Z     {
2026-06-23T09:38:03.1553257Z       "id": "REQ-SUBNET-7",
2026-06-23T09:38:03.1554962Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-23T09:38:03.1555186Z       "requiredStages": [
2026-06-23T09:38:03.1555277Z         "impl",
2026-06-23T09:38:03.1555363Z         "unit"
2026-06-23T09:38:03.1555450Z       ],
2026-06-23T09:38:03.1555534Z       "stages": {
2026-06-23T09:38:03.1555614Z         "doc": {
2026-06-23T09:38:03.1555804Z           "complete": false,
2026-06-23T09:38:03.1555903Z           "evidence": []
2026-06-23T09:38:03.1555988Z         },
2026-06-23T09:38:03.1556075Z         "impl": {
2026-06-23T09:38:03.1556166Z           "complete": true,
2026-06-23T09:38:03.1556265Z           "evidence": [
2026-06-23T09:38:03.1556361Z             {
2026-06-23T09:38:03.1556490Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-23T09:38:03.1556585Z               "line": 17
2026-06-23T09:38:03.1556666Z             },
2026-06-23T09:38:03.1556752Z             {
2026-06-23T09:38:03.1556885Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1556976Z               "line": 103
2026-06-23T09:38:03.1557067Z             },
2026-06-23T09:38:03.1557148Z             {
2026-06-23T09:38:03.1557276Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-23T09:38:03.1557358Z               "line": 312
2026-06-23T09:38:03.1557443Z             },
2026-06-23T09:38:03.1557539Z             {
2026-06-23T09:38:03.1557668Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-23T09:38:03.1557758Z               "line": 131
2026-06-23T09:38:03.1557839Z             },
2026-06-23T09:38:03.1557925Z             {
2026-06-23T09:38:03.1558054Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1558134Z               "line": 160
2026-06-23T09:38:03.1558216Z             },
2026-06-23T09:38:03.1558298Z             {
2026-06-23T09:38:03.1558430Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1558519Z               "line": 447
2026-06-23T09:38:03.1558611Z             },
2026-06-23T09:38:03.1558695Z             {
2026-06-23T09:38:03.1558817Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1558908Z               "line": 670
2026-06-23T09:38:03.1559057Z             },
2026-06-23T09:38:03.1559137Z             {
2026-06-23T09:38:03.1559257Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1559357Z               "line": 710
2026-06-23T09:38:03.1559442Z             },
2026-06-23T09:38:03.1559523Z             {
2026-06-23T09:38:03.1559658Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1559747Z               "line": 766
2026-06-23T09:38:03.1559843Z             },
2026-06-23T09:38:03.1559953Z             {
2026-06-23T09:38:03.1560086Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.1560177Z               "line": 136
2026-06-23T09:38:03.1560263Z             },
2026-06-23T09:38:03.1560348Z             {
2026-06-23T09:38:03.1560458Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1560554Z               "line": 139
2026-06-23T09:38:03.1560639Z             }
2026-06-23T09:38:03.1560730Z           ]
2026-06-23T09:38:03.1560812Z         },
2026-06-23T09:38:03.1560902Z         "int": {
2026-06-23T09:38:03.1561001Z           "complete": false,
2026-06-23T09:38:03.1561081Z           "evidence": []
2026-06-23T09:38:03.1561172Z         },
2026-06-23T09:38:03.1561253Z         "unit": {
2026-06-23T09:38:03.1561351Z           "complete": true,
2026-06-23T09:38:03.1561441Z           "evidence": [
2026-06-23T09:38:03.1561528Z             {
2026-06-23T09:38:03.1561647Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-23T09:38:03.1561737Z               "line": 136
2026-06-23T09:38:03.1561819Z             },
2026-06-23T09:38:03.1561909Z             {
2026-06-23T09:38:03.1562023Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-23T09:38:03.1562120Z               "line": 156
2026-06-23T09:38:03.1562300Z             },
2026-06-23T09:38:03.1562395Z             {
2026-06-23T09:38:03.1562510Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1562606Z               "line": 987
2026-06-23T09:38:03.1562686Z             },
2026-06-23T09:38:03.1562763Z             {
2026-06-23T09:38:03.1562891Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-23T09:38:03.1563069Z               "line": 1009
2026-06-23T09:38:03.1563159Z             },
2026-06-23T09:38:03.1563239Z             {
2026-06-23T09:38:03.1563369Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-23T09:38:03.1563460Z               "line": 1419
2026-06-23T09:38:03.1563544Z             },
2026-06-23T09:38:03.1563625Z             {
2026-06-23T09:38:03.1563741Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-23T09:38:03.1563836Z               "line": 1036
2026-06-23T09:38:03.1563920Z             }
2026-06-23T09:38:03.1564006Z           ]
2026-06-23T09:38:03.1564097Z         }
2026-06-23T09:38:03.1564183Z       }
2026-06-23T09:38:03.1564268Z     },
2026-06-23T09:38:03.1564340Z     {
2026-06-23T09:38:03.1564445Z       "id": "REQ-SUBNET-8",
2026-06-23T09:38:03.1565551Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-23T09:38:03.1565662Z       "requiredStages": [
2026-06-23T09:38:03.1565751Z         "impl",
2026-06-23T09:38:03.1565841Z         "unit"
2026-06-23T09:38:03.1565938Z       ],
2026-06-23T09:38:03.1566024Z       "stages": {
2026-06-23T09:38:03.1566113Z         "doc": {
2026-06-23T09:38:03.1566208Z           "complete": false,
2026-06-23T09:38:03.1566308Z           "evidence": []
2026-06-23T09:38:03.1566406Z         },
2026-06-23T09:38:03.1566492Z         "impl": {
2026-06-23T09:38:03.1566592Z           "complete": true,
2026-06-23T09:38:03.1566683Z           "evidence": [
2026-06-23T09:38:03.1566773Z             {
2026-06-23T09:38:03.1566868Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1566960Z               "line": 4490
2026-06-23T09:38:03.1567059Z             },
2026-06-23T09:38:03.1567145Z             {
2026-06-23T09:38:03.1567256Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1567346Z               "line": 4519
2026-06-23T09:38:03.1567431Z             },
2026-06-23T09:38:03.1567512Z             {
2026-06-23T09:38:03.1567622Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1567712Z               "line": 4536
2026-06-23T09:38:03.1567788Z             },
2026-06-23T09:38:03.1567885Z             {
2026-06-23T09:38:03.1567984Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1568075Z               "line": 4559
2026-06-23T09:38:03.1568161Z             },
2026-06-23T09:38:03.1568252Z             {
2026-06-23T09:38:03.1568361Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1568447Z               "line": 4973
2026-06-23T09:38:03.1568539Z             }
2026-06-23T09:38:03.1568609Z           ]
2026-06-23T09:38:03.1568699Z         },
2026-06-23T09:38:03.1568786Z         "int": {
2026-06-23T09:38:03.1568891Z           "complete": false,
2026-06-23T09:38:03.1569046Z           "evidence": []
2026-06-23T09:38:03.1569127Z         },
2026-06-23T09:38:03.1569222Z         "unit": {
2026-06-23T09:38:03.1569321Z           "complete": true,
2026-06-23T09:38:03.1569420Z           "evidence": [
2026-06-23T09:38:03.1569507Z             {
2026-06-23T09:38:03.1569607Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1569706Z               "line": 11763
2026-06-23T09:38:03.1569788Z             },
2026-06-23T09:38:03.1569884Z             {
2026-06-23T09:38:03.1569974Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1570198Z               "line": 11779
2026-06-23T09:38:03.1570279Z             }
2026-06-23T09:38:03.1570374Z           ]
2026-06-23T09:38:03.1570466Z         }
2026-06-23T09:38:03.1570541Z       }
2026-06-23T09:38:03.1570632Z     },
2026-06-23T09:38:03.1570718Z     {
2026-06-23T09:38:03.1570804Z       "id": "REQ-TERM-1",
2026-06-23T09:38:03.1571101Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-23T09:38:03.1571204Z       "requiredStages": [
2026-06-23T09:38:03.1571290Z         "impl",
2026-06-23T09:38:03.1571382Z         "unit"
2026-06-23T09:38:03.1571472Z       ],
2026-06-23T09:38:03.1571547Z       "stages": {
2026-06-23T09:38:03.1571641Z         "doc": {
2026-06-23T09:38:03.1571728Z           "complete": false,
2026-06-23T09:38:03.1571817Z           "evidence": []
2026-06-23T09:38:03.1571907Z         },
2026-06-23T09:38:03.1571997Z         "impl": {
2026-06-23T09:38:03.1572098Z           "complete": true,
2026-06-23T09:38:03.1572179Z           "evidence": [
2026-06-23T09:38:03.1572263Z             {
2026-06-23T09:38:03.1572374Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T09:38:03.1572465Z               "line": 59
2026-06-23T09:38:03.1572555Z             },
2026-06-23T09:38:03.1572636Z             {
2026-06-23T09:38:03.1572751Z               "path": "crates/spt-term/src/pty.rs",
2026-06-23T09:38:03.1572846Z               "line": 234
2026-06-23T09:38:03.1572936Z             },
2026-06-23T09:38:03.1573014Z             {
2026-06-23T09:38:03.1573141Z               "path": "crates/spt-term/src/surface.rs",
2026-06-23T09:38:03.1573227Z               "line": 100
2026-06-23T09:38:03.1573314Z             }
2026-06-23T09:38:03.1573404Z           ]
2026-06-23T09:38:03.1573490Z         },
2026-06-23T09:38:03.1573580Z         "int": {
2026-06-23T09:38:03.1573672Z           "complete": false,
2026-06-23T09:38:03.1573762Z           "evidence": []
2026-06-23T09:38:03.1573847Z         },
2026-06-23T09:38:03.1573929Z         "unit": {
2026-06-23T09:38:03.1574039Z           "complete": true,
2026-06-23T09:38:03.1574123Z           "evidence": [
2026-06-23T09:38:03.1574210Z             {
2026-06-23T09:38:03.1574325Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-23T09:38:03.1574410Z               "line": 24
2026-06-23T09:38:03.1574499Z             },
2026-06-23T09:38:03.1574585Z             {
2026-06-23T09:38:03.1574706Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-23T09:38:03.1574781Z               "line": 56
2026-06-23T09:38:03.1574871Z             }
2026-06-23T09:38:03.1574958Z           ]
2026-06-23T09:38:03.1575049Z         }
2026-06-23T09:38:03.1575133Z       }
2026-06-23T09:38:03.1575220Z     },
2026-06-23T09:38:03.1575306Z     {
2026-06-23T09:38:03.1575397Z       "id": "REQ-TERM-2",
2026-06-23T09:38:03.1575583Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-23T09:38:03.1575677Z       "requiredStages": [
2026-06-23T09:38:03.1575767Z         "impl",
2026-06-23T09:38:03.1575859Z         "unit"
2026-06-23T09:38:03.1575945Z       ],
2026-06-23T09:38:03.1576025Z       "stages": {
2026-06-23T09:38:03.1576116Z         "doc": {
2026-06-23T09:38:03.1576212Z           "complete": false,
2026-06-23T09:38:03.1576307Z           "evidence": []
2026-06-23T09:38:03.1576397Z         },
2026-06-23T09:38:03.1576483Z         "impl": {
2026-06-23T09:38:03.1576580Z           "complete": true,
2026-06-23T09:38:03.1576678Z           "evidence": [
2026-06-23T09:38:03.1576763Z             {
2026-06-23T09:38:03.1576887Z               "path": "crates/spt-term/src/surface.rs",
2026-06-23T09:38:03.1576976Z               "line": 117
2026-06-23T09:38:03.1577071Z             },
2026-06-23T09:38:03.1577157Z             {
2026-06-23T09:38:03.1577263Z               "path": "crates/spt-term/src/surface.rs",
2026-06-23T09:38:03.1577357Z               "line": 127
2026-06-23T09:38:03.1577452Z             }
2026-06-23T09:38:03.1577534Z           ]
2026-06-23T09:38:03.1577611Z         },
2026-06-23T09:38:03.1577700Z         "int": {
2026-06-23T09:38:03.1577882Z           "complete": false,
2026-06-23T09:38:03.1577963Z           "evidence": []
2026-06-23T09:38:03.1578048Z         },
2026-06-23T09:38:03.1578135Z         "unit": {
2026-06-23T09:38:03.1578244Z           "complete": true,
2026-06-23T09:38:03.1578339Z           "evidence": [
2026-06-23T09:38:03.1578426Z             {
2026-06-23T09:38:03.1578625Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-23T09:38:03.1578711Z               "line": 46
2026-06-23T09:38:03.1578798Z             },
2026-06-23T09:38:03.1578887Z             {
2026-06-23T09:38:03.1579075Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-23T09:38:03.1579165Z               "line": 77
2026-06-23T09:38:03.1579259Z             }
2026-06-23T09:38:03.1579356Z           ]
2026-06-23T09:38:03.1579438Z         }
2026-06-23T09:38:03.1579526Z       }
2026-06-23T09:38:03.1579602Z     },
2026-06-23T09:38:03.1579683Z     {
2026-06-23T09:38:03.1579769Z       "id": "REQ-TERM-3",
2026-06-23T09:38:03.1579924Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-23T09:38:03.1580028Z       "requiredStages": [
2026-06-23T09:38:03.1580115Z         "impl",
2026-06-23T09:38:03.1580205Z         "unit"
2026-06-23T09:38:03.1580285Z       ],
2026-06-23T09:38:03.1580383Z       "stages": {
2026-06-23T09:38:03.1580458Z         "doc": {
2026-06-23T09:38:03.1580553Z           "complete": false,
2026-06-23T09:38:03.1580654Z           "evidence": []
2026-06-23T09:38:03.1580735Z         },
2026-06-23T09:38:03.1580821Z         "impl": {
2026-06-23T09:38:03.1580911Z           "complete": true,
2026-06-23T09:38:03.1581007Z           "evidence": [
2026-06-23T09:38:03.1581092Z             {
2026-06-23T09:38:03.1581216Z               "path": "crates/spt-term/src/stream.rs",
2026-06-23T09:38:03.1581302Z               "line": 71
2026-06-23T09:38:03.1581388Z             }
2026-06-23T09:38:03.1581473Z           ]
2026-06-23T09:38:03.1581559Z         },
2026-06-23T09:38:03.1581656Z         "int": {
2026-06-23T09:38:03.1581750Z           "complete": false,
2026-06-23T09:38:03.1581831Z           "evidence": []
2026-06-23T09:38:03.1581918Z         },
2026-06-23T09:38:03.1582004Z         "unit": {
2026-06-23T09:38:03.1582107Z           "complete": true,
2026-06-23T09:38:03.1582192Z           "evidence": [
2026-06-23T09:38:03.1582283Z             {
2026-06-23T09:38:03.1582396Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-23T09:38:03.1582481Z               "line": 37
2026-06-23T09:38:03.1582571Z             },
2026-06-23T09:38:03.1582658Z             {
2026-06-23T09:38:03.1582772Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-23T09:38:03.1582862Z               "line": 67
2026-06-23T09:38:03.1582944Z             }
2026-06-23T09:38:03.1583034Z           ]
2026-06-23T09:38:03.1583129Z         }
2026-06-23T09:38:03.1583215Z       }
2026-06-23T09:38:03.1583301Z     },
2026-06-23T09:38:03.1583382Z     {
2026-06-23T09:38:03.1583467Z       "id": "REQ-TERM-4",
2026-06-23T09:38:03.1583941Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-23T09:38:03.1584026Z       "requiredStages": [
2026-06-23T09:38:03.1584116Z         "impl",
2026-06-23T09:38:03.1584204Z         "unit",
2026-06-23T09:38:03.1584293Z         "int"
2026-06-23T09:38:03.1584379Z       ],
2026-06-23T09:38:03.1584465Z       "stages": {
2026-06-23T09:38:03.1584551Z         "doc": {
2026-06-23T09:38:03.1584645Z           "complete": false,
2026-06-23T09:38:03.1584741Z           "evidence": []
2026-06-23T09:38:03.1584823Z         },
2026-06-23T09:38:03.1584909Z         "impl": {
2026-06-23T09:38:03.1585012Z           "complete": true,
2026-06-23T09:38:03.1585093Z           "evidence": [
2026-06-23T09:38:03.1585188Z             {
2026-06-23T09:38:03.1585303Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1585398Z               "line": 37
2026-06-23T09:38:03.1585580Z             },
2026-06-23T09:38:03.1585670Z             {
2026-06-23T09:38:03.1585795Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1585885Z               "line": 25
2026-06-23T09:38:03.1585975Z             },
2026-06-23T09:38:03.1586061Z             {
2026-06-23T09:38:03.1586185Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1586375Z               "line": 114
2026-06-23T09:38:03.1586457Z             },
2026-06-23T09:38:03.1586552Z             {
2026-06-23T09:38:03.1586676Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1586768Z               "line": 267
2026-06-23T09:38:03.1586853Z             },
2026-06-23T09:38:03.1586938Z             {
2026-06-23T09:38:03.1587058Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1587149Z               "line": 289
2026-06-23T09:38:03.1587233Z             },
2026-06-23T09:38:03.1587314Z             {
2026-06-23T09:38:03.1587443Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1587523Z               "line": 307
2026-06-23T09:38:03.1587607Z             },
2026-06-23T09:38:03.1587693Z             {
2026-06-23T09:38:03.1587803Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T09:38:03.1587893Z               "line": 33
2026-06-23T09:38:03.1587974Z             },
2026-06-23T09:38:03.1588065Z             {
2026-06-23T09:38:03.1588185Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1588265Z               "line": 52
2026-06-23T09:38:03.1588352Z             },
2026-06-23T09:38:03.1588437Z             {
2026-06-23T09:38:03.1588560Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1588642Z               "line": 180
2026-06-23T09:38:03.1588729Z             },
2026-06-23T09:38:03.1588819Z             {
2026-06-23T09:38:03.1589243Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1589405Z               "line": 190
2026-06-23T09:38:03.1589528Z             },
2026-06-23T09:38:03.1589678Z             {
2026-06-23T09:38:03.1589810Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1589896Z               "line": 250
2026-06-23T09:38:03.1589983Z             },
2026-06-23T09:38:03.1590068Z             {
2026-06-23T09:38:03.1590186Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1590291Z               "line": 284
2026-06-23T09:38:03.1590380Z             },
2026-06-23T09:38:03.1590465Z             {
2026-06-23T09:38:03.1590589Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1590680Z               "line": 295
2026-06-23T09:38:03.1590760Z             },
2026-06-23T09:38:03.1590855Z             {
2026-06-23T09:38:03.1590962Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1591047Z               "line": 1263
2026-06-23T09:38:03.1591132Z             }
2026-06-23T09:38:03.1591219Z           ]
2026-06-23T09:38:03.1591309Z         },
2026-06-23T09:38:03.1591395Z         "int": {
2026-06-23T09:38:03.1591485Z           "complete": true,
2026-06-23T09:38:03.1591572Z           "evidence": [
2026-06-23T09:38:03.1591657Z             {
2026-06-23T09:38:03.1591771Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-23T09:38:03.1591863Z               "line": 18
2026-06-23T09:38:03.1591948Z             }
2026-06-23T09:38:03.1592033Z           ]
2026-06-23T09:38:03.1592120Z         },
2026-06-23T09:38:03.1592202Z         "unit": {
2026-06-23T09:38:03.1592305Z           "complete": true,
2026-06-23T09:38:03.1592396Z           "evidence": [
2026-06-23T09:38:03.1592488Z             {
2026-06-23T09:38:03.1592606Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1592696Z               "line": 364
2026-06-23T09:38:03.1592785Z             },
2026-06-23T09:38:03.1592872Z             {
2026-06-23T09:38:03.1592984Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1593074Z               "line": 416
2026-06-23T09:38:03.1593280Z             },
2026-06-23T09:38:03.1593370Z             {
2026-06-23T09:38:03.1593480Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1593576Z               "line": 426
2026-06-23T09:38:03.1593651Z             },
2026-06-23T09:38:03.1593737Z             {
2026-06-23T09:38:03.1593861Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1594046Z               "line": 436
2026-06-23T09:38:03.1594139Z             },
2026-06-23T09:38:03.1594224Z             {
2026-06-23T09:38:03.1594338Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1594424Z               "line": 456
2026-06-23T09:38:03.1594505Z             },
2026-06-23T09:38:03.1594596Z             {
2026-06-23T09:38:03.1594705Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1594797Z               "line": 478
2026-06-23T09:38:03.1594882Z             },
2026-06-23T09:38:03.1594958Z             {
2026-06-23T09:38:03.1595083Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1595168Z               "line": 491
2026-06-23T09:38:03.1595253Z             },
2026-06-23T09:38:03.1595345Z             {
2026-06-23T09:38:03.1595469Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-23T09:38:03.1595553Z               "line": 502
2026-06-23T09:38:03.1595643Z             },
2026-06-23T09:38:03.1595730Z             {
2026-06-23T09:38:03.1595840Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T09:38:03.1595925Z               "line": 108
2026-06-23T09:38:03.1596015Z             },
2026-06-23T09:38:03.1596102Z             {
2026-06-23T09:38:03.1596216Z               "path": "crates/spt-term/src/digest.rs",
2026-06-23T09:38:03.1596311Z               "line": 119
2026-06-23T09:38:03.1596398Z             },
2026-06-23T09:38:03.1596488Z             {
2026-06-23T09:38:03.1596611Z               "path": "crates/spt-term/src/digest.rs",
2026-06-23T09:38:03.1596703Z               "line": 127
2026-06-23T09:38:03.1596788Z             },
2026-06-23T09:38:03.1596874Z             {
2026-06-23T09:38:03.1596999Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1597089Z               "line": 474
2026-06-23T09:38:03.1597179Z             },
2026-06-23T09:38:03.1597270Z             {
2026-06-23T09:38:03.1597389Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1597488Z               "line": 501
2026-06-23T09:38:03.1597565Z             },
2026-06-23T09:38:03.1597666Z             {
2026-06-23T09:38:03.1597784Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1597874Z               "line": 520
2026-06-23T09:38:03.1597965Z             },
2026-06-23T09:38:03.1598045Z             {
2026-06-23T09:38:03.1598162Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1598248Z               "line": 535
2026-06-23T09:38:03.1598340Z             },
2026-06-23T09:38:03.1598425Z             {
2026-06-23T09:38:03.1598539Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1598635Z               "line": 561
2026-06-23T09:38:03.1598711Z             },
2026-06-23T09:38:03.1598801Z             {
2026-06-23T09:38:03.1598912Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1599088Z               "line": 581
2026-06-23T09:38:03.1599178Z             },
2026-06-23T09:38:03.1599274Z             {
2026-06-23T09:38:03.1599393Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1599473Z               "line": 591
2026-06-23T09:38:03.1599561Z             },
2026-06-23T09:38:03.1599641Z             {
2026-06-23T09:38:03.1599760Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1599851Z               "line": 683
2026-06-23T09:38:03.1599923Z             },
2026-06-23T09:38:03.1600026Z             {
2026-06-23T09:38:03.1600147Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1600365Z               "line": 885
2026-06-23T09:38:03.1600447Z             },
2026-06-23T09:38:03.1600524Z             {
2026-06-23T09:38:03.1600633Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1600722Z               "line": 11330
2026-06-23T09:38:03.1600813Z             }
2026-06-23T09:38:03.1600894Z           ]
2026-06-23T09:38:03.1601077Z         }
2026-06-23T09:38:03.1601159Z       }
2026-06-23T09:38:03.1601240Z     },
2026-06-23T09:38:03.1601330Z     {
2026-06-23T09:38:03.1601425Z       "id": "REQ-TERM-5",
2026-06-23T09:38:03.1602937Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-23T09:38:03.1603048Z       "requiredStages": [
2026-06-23T09:38:03.1603125Z         "doc",
2026-06-23T09:38:03.1603213Z         "impl",
2026-06-23T09:38:03.1603298Z         "unit",
2026-06-23T09:38:03.1603384Z         "int"
2026-06-23T09:38:03.1603474Z       ],
2026-06-23T09:38:03.1603558Z       "stages": {
2026-06-23T09:38:03.1603653Z         "doc": {
2026-06-23T09:38:03.1603735Z           "complete": true,
2026-06-23T09:38:03.1603831Z           "evidence": [
2026-06-23T09:38:03.1603916Z             {
2026-06-23T09:38:03.1604030Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.1604122Z               "line": 250
2026-06-23T09:38:03.1604207Z             }
2026-06-23T09:38:03.1604297Z           ]
2026-06-23T09:38:03.1604380Z         },
2026-06-23T09:38:03.1604474Z         "impl": {
2026-06-23T09:38:03.1604554Z           "complete": true,
2026-06-23T09:38:03.1604651Z           "evidence": [
2026-06-23T09:38:03.1604732Z             {
2026-06-23T09:38:03.1604860Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1604955Z               "line": 75
2026-06-23T09:38:03.1605042Z             },
2026-06-23T09:38:03.1605122Z             {
2026-06-23T09:38:03.1605232Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1605324Z               "line": 131
2026-06-23T09:38:03.1605399Z             },
2026-06-23T09:38:03.1605489Z             {
2026-06-23T09:38:03.1605605Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.1605691Z               "line": 22
2026-06-23T09:38:03.1605780Z             },
2026-06-23T09:38:03.1605857Z             {
2026-06-23T09:38:03.1605977Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.1606066Z               "line": 87
2026-06-23T09:38:03.1606156Z             },
2026-06-23T09:38:03.1606242Z             {
2026-06-23T09:38:03.1606357Z               "path": "crates/spt-term/src/digest.rs",
2026-06-23T09:38:03.1606452Z               "line": 30
2026-06-23T09:38:03.1606542Z             },
2026-06-23T09:38:03.1606629Z             {
2026-06-23T09:38:03.1606748Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1606837Z               "line": 103
2026-06-23T09:38:03.1606934Z             },
2026-06-23T09:38:03.1607010Z             {
2026-06-23T09:38:03.1607138Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1607219Z               "line": 167
2026-06-23T09:38:03.1607315Z             },
2026-06-23T09:38:03.1607401Z             {
2026-06-23T09:38:03.1607525Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1607620Z               "line": 434
2026-06-23T09:38:03.1607696Z             },
2026-06-23T09:38:03.1607777Z             {
2026-06-23T09:38:03.1607884Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1607973Z               "line": 6316
2026-06-23T09:38:03.1608145Z             },
2026-06-23T09:38:03.1608231Z             {
2026-06-23T09:38:03.1608344Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1608429Z               "line": 6849
2026-06-23T09:38:03.1608515Z             }
2026-06-23T09:38:03.1608596Z           ]
2026-06-23T09:38:03.1608685Z         },
2026-06-23T09:38:03.1608837Z         "int": {
2026-06-23T09:38:03.1608938Z           "complete": true,
2026-06-23T09:38:03.1609094Z           "evidence": [
2026-06-23T09:38:03.1609176Z             {
2026-06-23T09:38:03.1609352Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-23T09:38:03.1609443Z               "line": 17
2026-06-23T09:38:03.1609529Z             }
2026-06-23T09:38:03.1609615Z           ]
2026-06-23T09:38:03.1609700Z         },
2026-06-23T09:38:03.1609787Z         "unit": {
2026-06-23T09:38:03.1609882Z           "complete": true,
2026-06-23T09:38:03.1609972Z           "evidence": [
2026-06-23T09:38:03.1610058Z             {
2026-06-23T09:38:03.1610187Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1610268Z               "line": 375
2026-06-23T09:38:03.1610358Z             },
2026-06-23T09:38:03.1610445Z             {
2026-06-23T09:38:03.1610554Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.1610644Z               "line": 162
2026-06-23T09:38:03.1610736Z             },
2026-06-23T09:38:03.1610812Z             {
2026-06-23T09:38:03.1610925Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.1611022Z               "line": 179
2026-06-23T09:38:03.1611142Z             },
2026-06-23T09:38:03.1614838Z             {
2026-06-23T09:38:03.1615010Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.1615110Z               "line": 201
2026-06-23T09:38:03.1615206Z             },
2026-06-23T09:38:03.1615288Z             {
2026-06-23T09:38:03.1615420Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.1615530Z               "line": 212
2026-06-23T09:38:03.1615603Z             },
2026-06-23T09:38:03.1615692Z             {
2026-06-23T09:38:03.1615807Z               "path": "crates/spt-live/src/digest.rs",
2026-06-23T09:38:03.1615903Z               "line": 223
2026-06-23T09:38:03.1615997Z             },
2026-06-23T09:38:03.1616078Z             {
2026-06-23T09:38:03.1616218Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1616311Z               "line": 1572
2026-06-23T09:38:03.1616407Z             },
2026-06-23T09:38:03.1616494Z             {
2026-06-23T09:38:03.1616617Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1616721Z               "line": 1615
2026-06-23T09:38:03.1616802Z             },
2026-06-23T09:38:03.1616893Z             {
2026-06-23T09:38:03.1617012Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1617107Z               "line": 606
2026-06-23T09:38:03.1617189Z             },
2026-06-23T09:38:03.1617280Z             {
2026-06-23T09:38:03.1617398Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1617485Z               "line": 634
2026-06-23T09:38:03.1617575Z             },
2026-06-23T09:38:03.1617660Z             {
2026-06-23T09:38:03.1617784Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1617870Z               "line": 646
2026-06-23T09:38:03.1617956Z             },
2026-06-23T09:38:03.1618041Z             {
2026-06-23T09:38:03.1618157Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1618247Z               "line": 669
2026-06-23T09:38:03.1618333Z             },
2026-06-23T09:38:03.1618419Z             {
2026-06-23T09:38:03.1618524Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1618623Z               "line": 9901
2026-06-23T09:38:03.1618714Z             },
2026-06-23T09:38:03.1618801Z             {
2026-06-23T09:38:03.1618909Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1619207Z               "line": 9959
2026-06-23T09:38:03.1619311Z             }
2026-06-23T09:38:03.1619393Z           ]
2026-06-23T09:38:03.1619484Z         }
2026-06-23T09:38:03.1619569Z       }
2026-06-23T09:38:03.1619654Z     },
2026-06-23T09:38:03.1619736Z     {
2026-06-23T09:38:03.1619822Z       "id": "REQ-TERM-6",
2026-06-23T09:38:03.1620927Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-23T09:38:03.1621128Z       "requiredStages": [
2026-06-23T09:38:03.1621205Z         "impl",
2026-06-23T09:38:03.1621296Z         "unit",
2026-06-23T09:38:03.1621382Z         "int"
2026-06-23T09:38:03.1621457Z       ],
2026-06-23T09:38:03.1621557Z       "stages": {
2026-06-23T09:38:03.1621640Z         "doc": {
2026-06-23T09:38:03.1621744Z           "complete": false,
2026-06-23T09:38:03.1621823Z           "evidence": []
2026-06-23T09:38:03.1621914Z         },
2026-06-23T09:38:03.1621999Z         "impl": {
2026-06-23T09:38:03.1622098Z           "complete": true,
2026-06-23T09:38:03.1622188Z           "evidence": [
2026-06-23T09:38:03.1622269Z             {
2026-06-23T09:38:03.1622399Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1622493Z               "line": 132
2026-06-23T09:38:03.1622579Z             },
2026-06-23T09:38:03.1622666Z             {
2026-06-23T09:38:03.1622789Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1622884Z               "line": 187
2026-06-23T09:38:03.1622961Z             },
2026-06-23T09:38:03.1623047Z             {
2026-06-23T09:38:03.1623155Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1623248Z               "line": 17
2026-06-23T09:38:03.1623333Z             },
2026-06-23T09:38:03.1623419Z             {
2026-06-23T09:38:03.1623538Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1623629Z               "line": 104
2026-06-23T09:38:03.1623713Z             },
2026-06-23T09:38:03.1623795Z             {
2026-06-23T09:38:03.1623920Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1624005Z               "line": 319
2026-06-23T09:38:03.1624095Z             },
2026-06-23T09:38:03.1624178Z             {
2026-06-23T09:38:03.1624301Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1624390Z               "line": 396
2026-06-23T09:38:03.1624470Z             }
2026-06-23T09:38:03.1624557Z           ]
2026-06-23T09:38:03.1624642Z         },
2026-06-23T09:38:03.1624731Z         "int": {
2026-06-23T09:38:03.1624836Z           "complete": true,
2026-06-23T09:38:03.1624922Z           "evidence": [
2026-06-23T09:38:03.1625008Z             {
2026-06-23T09:38:03.1625160Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-23T09:38:03.1625246Z               "line": 18
2026-06-23T09:38:03.1625332Z             }
2026-06-23T09:38:03.1625418Z           ]
2026-06-23T09:38:03.1625509Z         },
2026-06-23T09:38:03.1625589Z         "unit": {
2026-06-23T09:38:03.1625689Z           "complete": true,
2026-06-23T09:38:03.1625786Z           "evidence": [
2026-06-23T09:38:03.1625871Z             {
2026-06-23T09:38:03.1625990Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1626080Z               "line": 135
2026-06-23T09:38:03.1626168Z             },
2026-06-23T09:38:03.1626252Z             {
2026-06-23T09:38:03.1626367Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1626453Z               "line": 150
2026-06-23T09:38:03.1626548Z             },
2026-06-23T09:38:03.1626633Z             {
2026-06-23T09:38:03.1626754Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1626944Z               "line": 166
2026-06-23T09:38:03.1627025Z             },
2026-06-23T09:38:03.1627117Z             {
2026-06-23T09:38:03.1627224Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-23T09:38:03.1627310Z               "line": 257
2026-06-23T09:38:03.1627400Z             },
2026-06-23T09:38:03.1627482Z             {
2026-06-23T09:38:03.1627676Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1627764Z               "line": 738
2026-06-23T09:38:03.1627849Z             },
2026-06-23T09:38:03.1627934Z             {
2026-06-23T09:38:03.1628055Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1628140Z               "line": 759
2026-06-23T09:38:03.1628215Z             },
2026-06-23T09:38:03.1628292Z             {
2026-06-23T09:38:03.1628407Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-23T09:38:03.1628492Z               "line": 726
2026-06-23T09:38:03.1628578Z             }
2026-06-23T09:38:03.1628660Z           ]
2026-06-23T09:38:03.1628745Z         }
2026-06-23T09:38:03.1628831Z       }
2026-06-23T09:38:03.1628921Z     },
2026-06-23T09:38:03.1629074Z     {
2026-06-23T09:38:03.1629159Z       "id": "REQ-TERM-7",
2026-06-23T09:38:03.1630301Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-23T09:38:03.1630406Z       "requiredStages": [
2026-06-23T09:38:03.1630487Z         "impl",
2026-06-23T09:38:03.1630573Z         "unit",
2026-06-23T09:38:03.1630659Z         "int"
2026-06-23T09:38:03.1630744Z       ],
2026-06-23T09:38:03.1630830Z       "stages": {
2026-06-23T09:38:03.1630917Z         "doc": {
2026-06-23T09:38:03.1631012Z           "complete": false,
2026-06-23T09:38:03.1631107Z           "evidence": []
2026-06-23T09:38:03.1631183Z         },
2026-06-23T09:38:03.1631270Z         "impl": {
2026-06-23T09:38:03.1631355Z           "complete": true,
2026-06-23T09:38:03.1631450Z           "evidence": [
2026-06-23T09:38:03.1631536Z             {
2026-06-23T09:38:03.1631650Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1631736Z               "line": 133
2026-06-23T09:38:03.1631817Z             },
2026-06-23T09:38:03.1631909Z             {
2026-06-23T09:38:03.1632017Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1632108Z               "line": 326
2026-06-23T09:38:03.1632200Z             },
2026-06-23T09:38:03.1632285Z             {
2026-06-23T09:38:03.1632402Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T09:38:03.1632483Z               "line": 15
2026-06-23T09:38:03.1632574Z             },
2026-06-23T09:38:03.1632658Z             {
2026-06-23T09:38:03.1632772Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T09:38:03.1632859Z               "line": 32
2026-06-23T09:38:03.1632940Z             },
2026-06-23T09:38:03.1633034Z             {
2026-06-23T09:38:03.1633144Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T09:38:03.1633240Z               "line": 49
2026-06-23T09:38:03.1633330Z             },
2026-06-23T09:38:03.1633420Z             {
2026-06-23T09:38:03.1633545Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1633631Z               "line": 286
2026-06-23T09:38:03.1633715Z             },
2026-06-23T09:38:03.1633803Z             {
2026-06-23T09:38:03.1633926Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1634016Z               "line": 320
2026-06-23T09:38:03.1634103Z             }
2026-06-23T09:38:03.1634189Z           ]
2026-06-23T09:38:03.1634269Z         },
2026-06-23T09:38:03.1634399Z         "int": {
2026-06-23T09:38:03.1634622Z           "complete": true,
2026-06-23T09:38:03.1634709Z           "evidence": [
2026-06-23T09:38:03.1634795Z             {
2026-06-23T09:38:03.1634955Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-23T09:38:03.1635040Z               "line": 19
2026-06-23T09:38:03.1635126Z             }
2026-06-23T09:38:03.1635211Z           ]
2026-06-23T09:38:03.1635382Z         },
2026-06-23T09:38:03.1635464Z         "unit": {
2026-06-23T09:38:03.1635549Z           "complete": true,
2026-06-23T09:38:03.1635639Z           "evidence": [
2026-06-23T09:38:03.1635721Z             {
2026-06-23T09:38:03.1635825Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1636302Z               "line": 455
2026-06-23T09:38:03.1636474Z             },
2026-06-23T09:38:03.1636578Z             {
2026-06-23T09:38:03.1636713Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-23T09:38:03.1636812Z               "line": 568
2026-06-23T09:38:03.1636898Z             },
2026-06-23T09:38:03.1636999Z             {
2026-06-23T09:38:03.1637165Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T09:38:03.1637295Z               "line": 58
2026-06-23T09:38:03.1637414Z             },
2026-06-23T09:38:03.1637523Z             {
2026-06-23T09:38:03.1637677Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T09:38:03.1637803Z               "line": 77
2026-06-23T09:38:03.1637912Z             },
2026-06-23T09:38:03.1638037Z             {
2026-06-23T09:38:03.1638194Z               "path": "crates/spt-live/src/inject.rs",
2026-06-23T09:38:03.1638314Z               "line": 87
2026-06-23T09:38:03.1638424Z             },
2026-06-23T09:38:03.1638537Z             {
2026-06-23T09:38:03.1638714Z               "path": "crates/spt-store/src/history.rs",
2026-06-23T09:38:03.1638876Z               "line": 94
2026-06-23T09:38:03.1639081Z             },
2026-06-23T09:38:03.1639190Z             {
2026-06-23T09:38:03.1639376Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1639501Z               "line": 691
2026-06-23T09:38:03.1639621Z             },
2026-06-23T09:38:03.1639744Z             {
2026-06-23T09:38:03.1639898Z               "path": "crates/spt-term/src/projection.rs",
2026-06-23T09:38:03.1640020Z               "line": 716
2026-06-23T09:38:03.1640133Z             }
2026-06-23T09:38:03.1640248Z           ]
2026-06-23T09:38:03.1640375Z         }
2026-06-23T09:38:03.1640489Z       }
2026-06-23T09:38:03.1640609Z     },
2026-06-23T09:38:03.1640713Z     {
2026-06-23T09:38:03.1640837Z       "id": "REQ-UPD-1",
2026-06-23T09:38:03.1640994Z       "title": "Peer-propagated update over P2P",
2026-06-23T09:38:03.1641113Z       "requiredStages": [
2026-06-23T09:38:03.1641238Z         "impl",
2026-06-23T09:38:03.1641347Z         "unit",
2026-06-23T09:38:03.1641472Z         "int"
2026-06-23T09:38:03.1641586Z       ],
2026-06-23T09:38:03.1641709Z       "stages": {
2026-06-23T09:38:03.1641816Z         "doc": {
2026-06-23T09:38:03.1641953Z           "complete": false,
2026-06-23T09:38:03.1642082Z           "evidence": []
2026-06-23T09:38:03.1642192Z         },
2026-06-23T09:38:03.1642315Z         "impl": {
2026-06-23T09:38:03.1642445Z           "complete": true,
2026-06-23T09:38:03.1642577Z           "evidence": [
2026-06-23T09:38:03.1642687Z             {
2026-06-23T09:38:03.1642882Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1643024Z               "line": 28
2026-06-23T09:38:03.1643134Z             },
2026-06-23T09:38:03.1643266Z             {
2026-06-23T09:38:03.1643442Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1643571Z               "line": 103
2026-06-23T09:38:03.1643685Z             },
2026-06-23T09:38:03.1643800Z             {
2026-06-23T09:38:03.1643980Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1644096Z               "line": 342
2026-06-23T09:38:03.1644214Z             },
2026-06-23T09:38:03.1644325Z             {
2026-06-23T09:38:03.1644486Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1644801Z               "line": 22
2026-06-23T09:38:03.1644920Z             },
2026-06-23T09:38:03.1645040Z             {
2026-06-23T09:38:03.1645207Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1645322Z               "line": 207
2026-06-23T09:38:03.1645482Z             },
2026-06-23T09:38:03.1645799Z             {
2026-06-23T09:38:03.1645952Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1646077Z               "line": 283
2026-06-23T09:38:03.1646189Z             },
2026-06-23T09:38:03.1646295Z             {
2026-06-23T09:38:03.1646471Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1646591Z               "line": 340
2026-06-23T09:38:03.1646724Z             },
2026-06-23T09:38:03.1646838Z             {
2026-06-23T09:38:03.1647006Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T09:38:03.1647134Z               "line": 37
2026-06-23T09:38:03.1647249Z             }
2026-06-23T09:38:03.1647363Z           ]
2026-06-23T09:38:03.1647467Z         },
2026-06-23T09:38:03.1647583Z         "int": {
2026-06-23T09:38:03.1647706Z           "complete": true,
2026-06-23T09:38:03.1647835Z           "evidence": [
2026-06-23T09:38:03.1647950Z             {
2026-06-23T09:38:03.1648116Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-23T09:38:03.1648241Z               "line": 207
2026-06-23T09:38:03.1648373Z             },
2026-06-23T09:38:03.1648506Z             {
2026-06-23T09:38:03.1648669Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-23T09:38:03.1648797Z               "line": 1084
2026-06-23T09:38:03.1648908Z             }
2026-06-23T09:38:03.1649274Z           ]
2026-06-23T09:38:03.1649455Z         },
2026-06-23T09:38:03.1649579Z         "unit": {
2026-06-23T09:38:03.1649722Z           "complete": true,
2026-06-23T09:38:03.1649823Z           "evidence": [
2026-06-23T09:38:03.1649932Z             {
2026-06-23T09:38:03.1650128Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1650246Z               "line": 490
2026-06-23T09:38:03.1650361Z             },
2026-06-23T09:38:03.1650467Z             {
2026-06-23T09:38:03.1650637Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1650742Z               "line": 616
2026-06-23T09:38:03.1650855Z             },
2026-06-23T09:38:03.1650968Z             {
2026-06-23T09:38:03.1651140Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T09:38:03.1651244Z               "line": 277
2026-06-23T09:38:03.1651349Z             },
2026-06-23T09:38:03.1651460Z             {
2026-06-23T09:38:03.1651616Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T09:38:03.1651722Z               "line": 124
2026-06-23T09:38:03.1651831Z             },
2026-06-23T09:38:03.1651940Z             {
2026-06-23T09:38:03.1652099Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T09:38:03.1652212Z               "line": 200
2026-06-23T09:38:03.1652322Z             }
2026-06-23T09:38:03.1652432Z           ]
2026-06-23T09:38:03.1652532Z         }
2026-06-23T09:38:03.1652632Z       }
2026-06-23T09:38:03.1652743Z     },
2026-06-23T09:38:03.1652852Z     {
2026-06-23T09:38:03.1652967Z       "id": "REQ-UPD-2",
2026-06-23T09:38:03.1653176Z       "title": "All binaries signature-verified before handoff",
2026-06-23T09:38:03.1653301Z       "requiredStages": [
2026-06-23T09:38:03.1653405Z         "impl",
2026-06-23T09:38:03.1653509Z         "unit"
2026-06-23T09:38:03.1653618Z       ],
2026-06-23T09:38:03.1653732Z       "stages": {
2026-06-23T09:38:03.1653835Z         "doc": {
2026-06-23T09:38:03.1653954Z           "complete": false,
2026-06-23T09:38:03.1654060Z           "evidence": []
2026-06-23T09:38:03.1654159Z         },
2026-06-23T09:38:03.1654269Z         "impl": {
2026-06-23T09:38:03.1654379Z           "complete": true,
2026-06-23T09:38:03.1654488Z           "evidence": [
2026-06-23T09:38:03.1654817Z             {
2026-06-23T09:38:03.1654990Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1655099Z               "line": 343
2026-06-23T09:38:03.1655204Z             },
2026-06-23T09:38:03.1655304Z             {
2026-06-23T09:38:03.1655447Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1655694Z               "line": 476
2026-06-23T09:38:03.1655795Z             },
2026-06-23T09:38:03.1655902Z             {
2026-06-23T09:38:03.1656052Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1656151Z               "line": 29
2026-06-23T09:38:03.1656256Z             },
2026-06-23T09:38:03.1656354Z             {
2026-06-23T09:38:03.1656502Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1656613Z               "line": 281
2026-06-23T09:38:03.1656721Z             },
2026-06-23T09:38:03.1656826Z             {
2026-06-23T09:38:03.1656965Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1657098Z               "line": 298
2026-06-23T09:38:03.1657199Z             },
2026-06-23T09:38:03.1657303Z             {
2026-06-23T09:38:03.1657446Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1657561Z               "line": 418
2026-06-23T09:38:03.1657675Z             },
2026-06-23T09:38:03.1657775Z             {
2026-06-23T09:38:03.1657928Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1658028Z               "line": 568
2026-06-23T09:38:03.1658125Z             },
2026-06-23T09:38:03.1658219Z             {
2026-06-23T09:38:03.1658361Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1658477Z               "line": 155
2026-06-23T09:38:03.1658581Z             }
2026-06-23T09:38:03.1658686Z           ]
2026-06-23T09:38:03.1658787Z         },
2026-06-23T09:38:03.1658895Z         "int": {
2026-06-23T09:38:03.1659153Z           "complete": false,
2026-06-23T09:38:03.1659290Z           "evidence": []
2026-06-23T09:38:03.1659406Z         },
2026-06-23T09:38:03.1659510Z         "unit": {
2026-06-23T09:38:03.1659628Z           "complete": true,
2026-06-23T09:38:03.1659730Z           "evidence": [
2026-06-23T09:38:03.1659839Z             {
2026-06-23T09:38:03.1659982Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1660088Z               "line": 760
2026-06-23T09:38:03.1660192Z             },
2026-06-23T09:38:03.1660296Z             {
2026-06-23T09:38:03.1660436Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1660531Z               "line": 821
2026-06-23T09:38:03.1660640Z             },
2026-06-23T09:38:03.1660746Z             {
2026-06-23T09:38:03.1660874Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1660979Z               "line": 835
2026-06-23T09:38:03.1661079Z             },
2026-06-23T09:38:03.1661182Z             {
2026-06-23T09:38:03.1661316Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1661430Z               "line": 851
2026-06-23T09:38:03.1661538Z             },
2026-06-23T09:38:03.1661643Z             {
2026-06-23T09:38:03.1661791Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1661900Z               "line": 942
2026-06-23T09:38:03.1662011Z             },
2026-06-23T09:38:03.1662110Z             {
2026-06-23T09:38:03.1662268Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1662382Z               "line": 414
2026-06-23T09:38:03.1662481Z             },
2026-06-23T09:38:03.1662583Z             {
2026-06-23T09:38:03.1662716Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1662829Z               "line": 427
2026-06-23T09:38:03.1662917Z             },
2026-06-23T09:38:03.1663007Z             {
2026-06-23T09:38:03.1663135Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T09:38:03.1663227Z               "line": 410
2026-06-23T09:38:03.1663313Z             }
2026-06-23T09:38:03.1663512Z           ]
2026-06-23T09:38:03.1663594Z         }
2026-06-23T09:38:03.1663678Z       }
2026-06-23T09:38:03.1663774Z     },
2026-06-23T09:38:03.1663866Z     {
2026-06-23T09:38:03.1663961Z       "id": "REQ-UPD-3",
2026-06-23T09:38:03.1664139Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-23T09:38:03.1664226Z       "requiredStages": [
2026-06-23T09:38:03.1664414Z         "impl",
2026-06-23T09:38:03.1664501Z         "unit",
2026-06-23T09:38:03.1664587Z         "int"
2026-06-23T09:38:03.1664672Z       ],
2026-06-23T09:38:03.1664758Z       "stages": {
2026-06-23T09:38:03.1664844Z         "doc": {
2026-06-23T09:38:03.1664934Z           "complete": false,
2026-06-23T09:38:03.1665029Z           "evidence": []
2026-06-23T09:38:03.1665115Z         },
2026-06-23T09:38:03.1665198Z         "impl": {
2026-06-23T09:38:03.1665297Z           "complete": true,
2026-06-23T09:38:03.1665382Z           "evidence": [
2026-06-23T09:38:03.1665469Z             {
2026-06-23T09:38:03.1665602Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1665697Z               "line": 40
2026-06-23T09:38:03.1665779Z             },
2026-06-23T09:38:03.1665869Z             {
2026-06-23T09:38:03.1666002Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1666094Z               "line": 87
2026-06-23T09:38:03.1666189Z             },
2026-06-23T09:38:03.1666274Z             {
2026-06-23T09:38:03.1666399Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.1666490Z               "line": 1164
2026-06-23T09:38:03.1666583Z             },
2026-06-23T09:38:03.1666673Z             {
2026-06-23T09:38:03.1666793Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1666886Z               "line": 1994
2026-06-23T09:38:03.1666958Z             },
2026-06-23T09:38:03.1667053Z             {
2026-06-23T09:38:03.1667158Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1667243Z               "line": 26
2026-06-23T09:38:03.1667338Z             },
2026-06-23T09:38:03.1667416Z             {
2026-06-23T09:38:03.1667540Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1667625Z               "line": 114
2026-06-23T09:38:03.1667716Z             },
2026-06-23T09:38:03.1667802Z             {
2026-06-23T09:38:03.1667920Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1668021Z               "line": 246
2026-06-23T09:38:03.1668102Z             },
2026-06-23T09:38:03.1668192Z             {
2026-06-23T09:38:03.1668297Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1668394Z               "line": 2796
2026-06-23T09:38:03.1668478Z             }
2026-06-23T09:38:03.1668569Z           ]
2026-06-23T09:38:03.1668651Z         },
2026-06-23T09:38:03.1668737Z         "int": {
2026-06-23T09:38:03.1668841Z           "complete": true,
2026-06-23T09:38:03.1668926Z           "evidence": [
2026-06-23T09:38:03.1669146Z             {
2026-06-23T09:38:03.1669285Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-23T09:38:03.1669371Z               "line": 58
2026-06-23T09:38:03.1669474Z             }
2026-06-23T09:38:03.1669569Z           ]
2026-06-23T09:38:03.1669660Z         },
2026-06-23T09:38:03.1669742Z         "unit": {
2026-06-23T09:38:03.1669841Z           "complete": true,
2026-06-23T09:38:03.1669941Z           "evidence": [
2026-06-23T09:38:03.1670038Z             {
2026-06-23T09:38:03.1670170Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1670256Z               "line": 532
2026-06-23T09:38:03.1670347Z             },
2026-06-23T09:38:03.1670433Z             {
2026-06-23T09:38:03.1670561Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1670648Z               "line": 587
2026-06-23T09:38:03.1670737Z             },
2026-06-23T09:38:03.1670828Z             {
2026-06-23T09:38:03.1670943Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1671138Z               "line": 655
2026-06-23T09:38:03.1671220Z             },
2026-06-23T09:38:03.1671301Z             {
2026-06-23T09:38:03.1671409Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-23T09:38:03.1671501Z               "line": 1102
2026-06-23T09:38:03.1671587Z             },
2026-06-23T09:38:03.1671672Z             {
2026-06-23T09:38:03.1671895Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1671980Z               "line": 271
2026-06-23T09:38:03.1672069Z             },
2026-06-23T09:38:03.1672159Z             {
2026-06-23T09:38:03.1672270Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1672361Z               "line": 295
2026-06-23T09:38:03.1672446Z             },
2026-06-23T09:38:03.1672541Z             {
2026-06-23T09:38:03.1672652Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1672741Z               "line": 316
2026-06-23T09:38:03.1672833Z             },
2026-06-23T09:38:03.1672923Z             {
2026-06-23T09:38:03.1673042Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1673133Z               "line": 332
2026-06-23T09:38:03.1673224Z             }
2026-06-23T09:38:03.1673305Z           ]
2026-06-23T09:38:03.1673389Z         }
2026-06-23T09:38:03.1673482Z       }
2026-06-23T09:38:03.1673567Z     },
2026-06-23T09:38:03.1673662Z     {
2026-06-23T09:38:03.1673753Z       "id": "REQ-UPD-4",
2026-06-23T09:38:03.1673938Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-23T09:38:03.1674038Z       "requiredStages": [
2026-06-23T09:38:03.1674125Z         "impl",
2026-06-23T09:38:03.1674211Z         "unit"
2026-06-23T09:38:03.1674301Z       ],
2026-06-23T09:38:03.1674387Z       "stages": {
2026-06-23T09:38:03.1674474Z         "doc": {
2026-06-23T09:38:03.1674572Z           "complete": false,
2026-06-23T09:38:03.1674662Z           "evidence": []
2026-06-23T09:38:03.1674753Z         },
2026-06-23T09:38:03.1674843Z         "impl": {
2026-06-23T09:38:03.1674936Z           "complete": true,
2026-06-23T09:38:03.1675026Z           "evidence": [
2026-06-23T09:38:03.1675108Z             {
2026-06-23T09:38:03.1675246Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1675332Z               "line": 41
2026-06-23T09:38:03.1675419Z             },
2026-06-23T09:38:03.1675504Z             {
2026-06-23T09:38:03.1675632Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1675719Z               "line": 88
2026-06-23T09:38:03.1675804Z             },
2026-06-23T09:38:03.1675899Z             {
2026-06-23T09:38:03.1676019Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T09:38:03.1676106Z               "line": 23
2026-06-23T09:38:03.1676196Z             },
2026-06-23T09:38:03.1676276Z             {
2026-06-23T09:38:03.1676402Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T09:38:03.1676486Z               "line": 56
2026-06-23T09:38:03.1676581Z             },
2026-06-23T09:38:03.1676668Z             {
2026-06-23T09:38:03.1676796Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T09:38:03.1676891Z               "line": 77
2026-06-23T09:38:03.1676979Z             },
2026-06-23T09:38:03.1677069Z             {
2026-06-23T09:38:03.1677191Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-23T09:38:03.1677291Z               "line": 434
2026-06-23T09:38:03.1677377Z             },
2026-06-23T09:38:03.1677460Z             {
2026-06-23T09:38:03.1677583Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-23T09:38:03.1677675Z               "line": 108
2026-06-23T09:38:03.1677766Z             },
2026-06-23T09:38:03.1677841Z             {
2026-06-23T09:38:03.1677961Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.1678043Z               "line": 270
2026-06-23T09:38:03.1678137Z             },
2026-06-23T09:38:03.1678218Z             {
2026-06-23T09:38:03.1678329Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1678523Z               "line": 2795
2026-06-23T09:38:03.1678606Z             }
2026-06-23T09:38:03.1678695Z           ]
2026-06-23T09:38:03.1678786Z         },
2026-06-23T09:38:03.1678871Z         "int": {
2026-06-23T09:38:03.1679091Z           "complete": false,
2026-06-23T09:38:03.1679181Z           "evidence": []
2026-06-23T09:38:03.1679377Z         },
2026-06-23T09:38:03.1679453Z         "unit": {
2026-06-23T09:38:03.1679555Z           "complete": true,
2026-06-23T09:38:03.1679635Z           "evidence": [
2026-06-23T09:38:03.1679725Z             {
2026-06-23T09:38:03.1679855Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1679945Z               "line": 583
2026-06-23T09:38:03.1680034Z             },
2026-06-23T09:38:03.1680114Z             {
2026-06-23T09:38:03.1680235Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1680321Z               "line": 708
2026-06-23T09:38:03.1680415Z             },
2026-06-23T09:38:03.1680506Z             {
2026-06-23T09:38:03.1680631Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-23T09:38:03.1680730Z               "line": 384
2026-06-23T09:38:03.1680811Z             },
2026-06-23T09:38:03.1680893Z             {
2026-06-23T09:38:03.1681012Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T09:38:03.1681092Z               "line": 102
2026-06-23T09:38:03.1681189Z             },
2026-06-23T09:38:03.1681274Z             {
2026-06-23T09:38:03.1681393Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T09:38:03.1681480Z               "line": 123
2026-06-23T09:38:03.1681570Z             },
2026-06-23T09:38:03.1681660Z             {
2026-06-23T09:38:03.1681766Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-23T09:38:03.1681852Z               "line": 142
2026-06-23T09:38:03.1681936Z             },
2026-06-23T09:38:03.1682018Z             {
2026-06-23T09:38:03.1682134Z               "path": "crates/spt-store/src/info.rs",
2026-06-23T09:38:03.1682232Z               "line": 582
2026-06-23T09:38:03.1682322Z             },
2026-06-23T09:38:03.1682402Z             {
2026-06-23T09:38:03.1682526Z               "path": "crates/spt-store/src/perch.rs",
2026-06-23T09:38:03.1682611Z               "line": 566
2026-06-23T09:38:03.1682705Z             },
2026-06-23T09:38:03.1682787Z             {
2026-06-23T09:38:03.1682897Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1682982Z               "line": 9652
2026-06-23T09:38:03.1683068Z             }
2026-06-23T09:38:03.1683160Z           ]
2026-06-23T09:38:03.1683245Z         }
2026-06-23T09:38:03.1683330Z       }
2026-06-23T09:38:03.1683417Z     },
2026-06-23T09:38:03.1683516Z     {
2026-06-23T09:38:03.1683621Z       "id": "REQ-UPD-5",
2026-06-23T09:38:03.1683760Z       "title": "spt-core ripple-updates registered adapters",
2026-06-23T09:38:03.1683855Z       "requiredStages": [
2026-06-23T09:38:03.1683940Z         "impl",
2026-06-23T09:38:03.1684027Z         "unit"
2026-06-23T09:38:03.1684118Z       ],
2026-06-23T09:38:03.1684208Z       "stages": {
2026-06-23T09:38:03.1684293Z         "doc": {
2026-06-23T09:38:03.1684385Z           "complete": false,
2026-06-23T09:38:03.1684480Z           "evidence": []
2026-06-23T09:38:03.1684565Z         },
2026-06-23T09:38:03.1684652Z         "impl": {
2026-06-23T09:38:03.1684738Z           "complete": true,
2026-06-23T09:38:03.1684841Z           "evidence": [
2026-06-23T09:38:03.1684933Z             {
2026-06-23T09:38:03.1685067Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1685161Z               "line": 27
2026-06-23T09:38:03.1685246Z             },
2026-06-23T09:38:03.1685323Z             {
2026-06-23T09:38:03.1685459Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1685549Z               "line": 87
2026-06-23T09:38:03.1685635Z             },
2026-06-23T09:38:03.1685712Z             {
2026-06-23T09:38:03.1685844Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1686027Z               "line": 145
2026-06-23T09:38:03.1686117Z             },
2026-06-23T09:38:03.1686202Z             {
2026-06-23T09:38:03.1686337Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1686423Z               "line": 502
2026-06-23T09:38:03.1686502Z             },
2026-06-23T09:38:03.1686666Z             {
2026-06-23T09:38:03.1686789Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1686884Z               "line": 556
2026-06-23T09:38:03.1686971Z             }
2026-06-23T09:38:03.1687060Z           ]
2026-06-23T09:38:03.1687151Z         },
2026-06-23T09:38:03.1687238Z         "int": {
2026-06-23T09:38:03.1687342Z           "complete": false,
2026-06-23T09:38:03.1687437Z           "evidence": []
2026-06-23T09:38:03.1691215Z         },
2026-06-23T09:38:03.1691333Z         "unit": {
2026-06-23T09:38:03.1691444Z           "complete": true,
2026-06-23T09:38:03.1691544Z           "evidence": [
2026-06-23T09:38:03.1691638Z             {
2026-06-23T09:38:03.1691791Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1691882Z               "line": 278
2026-06-23T09:38:03.1691972Z             },
2026-06-23T09:38:03.1692054Z             {
2026-06-23T09:38:03.1692196Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1692301Z               "line": 292
2026-06-23T09:38:03.1692384Z             },
2026-06-23T09:38:03.1692464Z             {
2026-06-23T09:38:03.1692583Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1692674Z               "line": 306
2026-06-23T09:38:03.1692764Z             },
2026-06-23T09:38:03.1692854Z             {
2026-06-23T09:38:03.1692987Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1693072Z               "line": 320
2026-06-23T09:38:03.1693161Z             },
2026-06-23T09:38:03.1693246Z             {
2026-06-23T09:38:03.1693376Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1693476Z               "line": 354
2026-06-23T09:38:03.1693561Z             },
2026-06-23T09:38:03.1693648Z             {
2026-06-23T09:38:03.1693772Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1693861Z               "line": 1118
2026-06-23T09:38:03.1693943Z             }
2026-06-23T09:38:03.1694025Z           ]
2026-06-23T09:38:03.1694110Z         }
2026-06-23T09:38:03.1694195Z       }
2026-06-23T09:38:03.1694278Z     },
2026-06-23T09:38:03.1694368Z     {
2026-06-23T09:38:03.1694468Z       "id": "REQ-UPD-6",
2026-06-23T09:38:03.1695288Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-23T09:38:03.1695392Z       "requiredStages": [
2026-06-23T09:38:03.1695478Z         "doc",
2026-06-23T09:38:03.1695566Z         "impl",
2026-06-23T09:38:03.1695641Z         "unit",
2026-06-23T09:38:03.1695726Z         "int"
2026-06-23T09:38:03.1695816Z       ],
2026-06-23T09:38:03.1695902Z       "stages": {
2026-06-23T09:38:03.1695991Z         "doc": {
2026-06-23T09:38:03.1696089Z           "complete": true,
2026-06-23T09:38:03.1696181Z           "evidence": [
2026-06-23T09:38:03.1696277Z             {
2026-06-23T09:38:03.1696414Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-23T09:38:03.1696500Z               "line": 3
2026-06-23T09:38:03.1696587Z             },
2026-06-23T09:38:03.1696682Z             {
2026-06-23T09:38:03.1696796Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-23T09:38:03.1696887Z               "line": 3
2026-06-23T09:38:03.1696973Z             },
2026-06-23T09:38:03.1697057Z             {
2026-06-23T09:38:03.1697221Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-23T09:38:03.1697311Z               "line": 3
2026-06-23T09:38:03.1697569Z             }
2026-06-23T09:38:03.1697659Z           ]
2026-06-23T09:38:03.1697745Z         },
2026-06-23T09:38:03.1697841Z         "impl": {
2026-06-23T09:38:03.1697935Z           "complete": true,
2026-06-23T09:38:03.1698026Z           "evidence": [
2026-06-23T09:38:03.1698113Z             {
2026-06-23T09:38:03.1698354Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1698449Z               "line": 76
2026-06-23T09:38:03.1698539Z             },
2026-06-23T09:38:03.1698628Z             {
2026-06-23T09:38:03.1698743Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1698843Z               "line": 212
2026-06-23T09:38:03.1698924Z             },
2026-06-23T09:38:03.1699153Z             {
2026-06-23T09:38:03.1699286Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1699372Z               "line": 69
2026-06-23T09:38:03.1699463Z             },
2026-06-23T09:38:03.1699554Z             {
2026-06-23T09:38:03.1699672Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1699764Z               "line": 133
2026-06-23T09:38:03.1699849Z             },
2026-06-23T09:38:03.1699924Z             {
2026-06-23T09:38:03.1700040Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1700135Z               "line": 243
2026-06-23T09:38:03.1700226Z             },
2026-06-23T09:38:03.1700311Z             {
2026-06-23T09:38:03.1700432Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1700521Z               "line": 406
2026-06-23T09:38:03.1700617Z             },
2026-06-23T09:38:03.1700699Z             {
2026-06-23T09:38:03.1700826Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1700917Z               "line": 534
2026-06-23T09:38:03.1701009Z             },
2026-06-23T09:38:03.1701094Z             {
2026-06-23T09:38:03.1701212Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1701302Z               "line": 548
2026-06-23T09:38:03.1701389Z             },
2026-06-23T09:38:03.1701474Z             {
2026-06-23T09:38:03.1701583Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1701675Z               "line": 603
2026-06-23T09:38:03.1701761Z             },
2026-06-23T09:38:03.1701845Z             {
2026-06-23T09:38:03.1701976Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1702056Z               "line": 634
2026-06-23T09:38:03.1702146Z             },
2026-06-23T09:38:03.1702227Z             {
2026-06-23T09:38:03.1702361Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-23T09:38:03.1702442Z               "line": 137
2026-06-23T09:38:03.1702523Z             },
2026-06-23T09:38:03.1702605Z             {
2026-06-23T09:38:03.1702718Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-23T09:38:03.1702814Z               "line": 184
2026-06-23T09:38:03.1702891Z             },
2026-06-23T09:38:03.1702986Z             {
2026-06-23T09:38:03.1703114Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1703195Z               "line": 78
2026-06-23T09:38:03.1703287Z             },
2026-06-23T09:38:03.1703371Z             {
2026-06-23T09:38:03.1703494Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1703595Z               "line": 114
2026-06-23T09:38:03.1703684Z             },
2026-06-23T09:38:03.1703764Z             {
2026-06-23T09:38:03.1703878Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1703970Z               "line": 185
2026-06-23T09:38:03.1704050Z             },
2026-06-23T09:38:03.1704135Z             {
2026-06-23T09:38:03.1704256Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1704341Z               "line": 260
2026-06-23T09:38:03.1704431Z             },
2026-06-23T09:38:03.1704518Z             {
2026-06-23T09:38:03.1704637Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1704843Z               "line": 292
2026-06-23T09:38:03.1704928Z             },
2026-06-23T09:38:03.1705018Z             {
2026-06-23T09:38:03.1705128Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1705219Z               "line": 323
2026-06-23T09:38:03.1705300Z             },
2026-06-23T09:38:03.1705482Z             {
2026-06-23T09:38:03.1705595Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1705681Z               "line": 346
2026-06-23T09:38:03.1705763Z             },
2026-06-23T09:38:03.1705849Z             {
2026-06-23T09:38:03.1705971Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1706063Z               "line": 388
2026-06-23T09:38:03.1706150Z             },
2026-06-23T09:38:03.1706225Z             {
2026-06-23T09:38:03.1706347Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1706438Z               "line": 398
2026-06-23T09:38:03.1706532Z             },
2026-06-23T09:38:03.1706612Z             {
2026-06-23T09:38:03.1706722Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1706813Z               "line": 410
2026-06-23T09:38:03.1706894Z             },
2026-06-23T09:38:03.1706983Z             {
2026-06-23T09:38:03.1707284Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1707447Z               "line": 420
2026-06-23T09:38:03.1707543Z             },
2026-06-23T09:38:03.1707627Z             {
2026-06-23T09:38:03.1707767Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1707866Z               "line": 439
2026-06-23T09:38:03.1707956Z             },
2026-06-23T09:38:03.1708044Z             {
2026-06-23T09:38:03.1708167Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1708266Z               "line": 449
2026-06-23T09:38:03.1708349Z             },
2026-06-23T09:38:03.1708425Z             {
2026-06-23T09:38:03.1708558Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1708664Z               "line": 94
2026-06-23T09:38:03.1708749Z             },
2026-06-23T09:38:03.1708834Z             {
2026-06-23T09:38:03.1709067Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1709151Z               "line": 120
2026-06-23T09:38:03.1709240Z             },
2026-06-23T09:38:03.1709341Z             {
2026-06-23T09:38:03.1709475Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1709569Z               "line": 135
2026-06-23T09:38:03.1709651Z             },
2026-06-23T09:38:03.1709742Z             {
2026-06-23T09:38:03.1709846Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1709942Z               "line": 162
2026-06-23T09:38:03.1710033Z             },
2026-06-23T09:38:03.1710114Z             {
2026-06-23T09:38:03.1710237Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1710319Z               "line": 174
2026-06-23T09:38:03.1710409Z             },
2026-06-23T09:38:03.1710494Z             {
2026-06-23T09:38:03.1710605Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1710705Z               "line": 195
2026-06-23T09:38:03.1710786Z             },
2026-06-23T09:38:03.1710872Z             {
2026-06-23T09:38:03.1710996Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1711091Z               "line": 461
2026-06-23T09:38:03.1711177Z             },
2026-06-23T09:38:03.1711259Z             {
2026-06-23T09:38:03.1711386Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1711477Z               "line": 583
2026-06-23T09:38:03.1711560Z             },
2026-06-23T09:38:03.1711645Z             {
2026-06-23T09:38:03.1711772Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1711858Z               "line": 171
2026-06-23T09:38:03.1711953Z             },
2026-06-23T09:38:03.1712039Z             {
2026-06-23T09:38:03.1712321Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T09:38:03.1712410Z               "line": 65
2026-06-23T09:38:03.1712492Z             },
2026-06-23T09:38:03.1712579Z             {
2026-06-23T09:38:03.1712701Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T09:38:03.1712797Z               "line": 71
2026-06-23T09:38:03.1712988Z             },
2026-06-23T09:38:03.1713073Z             {
2026-06-23T09:38:03.1713204Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-23T09:38:03.1713288Z               "line": 77
2026-06-23T09:38:03.1713378Z             },
2026-06-23T09:38:03.1713470Z             {
2026-06-23T09:38:03.1713588Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1713674Z               "line": 870
2026-06-23T09:38:03.1713765Z             },
2026-06-23T09:38:03.1713857Z             {
2026-06-23T09:38:03.1713969Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1714068Z               "line": 887
2026-06-23T09:38:03.1714160Z             },
2026-06-23T09:38:03.1714244Z             {
2026-06-23T09:38:03.1714348Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1714438Z               "line": 930
2026-06-23T09:38:03.1714535Z             },
2026-06-23T09:38:03.1714629Z             {
2026-06-23T09:38:03.1714739Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1714845Z               "line": 1073
2026-06-23T09:38:03.1714930Z             },
2026-06-23T09:38:03.1715024Z             {
2026-06-23T09:38:03.1715131Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1715230Z               "line": 1223
2026-06-23T09:38:03.1715316Z             }
2026-06-23T09:38:03.1715408Z           ]
2026-06-23T09:38:03.1715502Z         },
2026-06-23T09:38:03.1715592Z         "int": {
2026-06-23T09:38:03.1715693Z           "complete": true,
2026-06-23T09:38:03.1715784Z           "evidence": [
2026-06-23T09:38:03.1715879Z             {
2026-06-23T09:38:03.1716018Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T09:38:03.1716122Z               "line": 569
2026-06-23T09:38:03.1716217Z             },
2026-06-23T09:38:03.1716308Z             {
2026-06-23T09:38:03.1716442Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-23T09:38:03.1716532Z               "line": 135
2026-06-23T09:38:03.1716628Z             }
2026-06-23T09:38:03.1716719Z           ]
2026-06-23T09:38:03.1716813Z         },
2026-06-23T09:38:03.1716907Z         "unit": {
2026-06-23T09:38:03.1717008Z           "complete": true,
2026-06-23T09:38:03.1717106Z           "evidence": [
2026-06-23T09:38:03.1717196Z             {
2026-06-23T09:38:03.1717340Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1717430Z               "line": 628
2026-06-23T09:38:03.1717530Z             },
2026-06-23T09:38:03.1717625Z             {
2026-06-23T09:38:03.1717755Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1717854Z               "line": 677
2026-06-23T09:38:03.1717945Z             },
2026-06-23T09:38:03.1718040Z             {
2026-06-23T09:38:03.1718164Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-23T09:38:03.1718264Z               "line": 696
2026-06-23T09:38:03.1718365Z             },
2026-06-23T09:38:03.1718455Z             {
2026-06-23T09:38:03.1718589Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1718684Z               "line": 513
2026-06-23T09:38:03.1718774Z             },
2026-06-23T09:38:03.1718860Z             {
2026-06-23T09:38:03.1719084Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1719185Z               "line": 638
2026-06-23T09:38:03.1719271Z             },
2026-06-23T09:38:03.1719366Z             {
2026-06-23T09:38:03.1719488Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1719589Z               "line": 675
2026-06-23T09:38:03.1719673Z             },
2026-06-23T09:38:03.1719767Z             {
2026-06-23T09:38:03.1720007Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1720101Z               "line": 957
2026-06-23T09:38:03.1720192Z             },
2026-06-23T09:38:03.1720279Z             {
2026-06-23T09:38:03.1720411Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1720507Z               "line": 979
2026-06-23T09:38:03.1720693Z             },
2026-06-23T09:38:03.1720788Z             {
2026-06-23T09:38:03.1720912Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1721008Z               "line": 996
2026-06-23T09:38:03.1721093Z             },
2026-06-23T09:38:03.1721189Z             {
2026-06-23T09:38:03.1721318Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1721408Z               "line": 1011
2026-06-23T09:38:03.1721499Z             },
2026-06-23T09:38:03.1721589Z             {
2026-06-23T09:38:03.1721713Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1721805Z               "line": 1037
2026-06-23T09:38:03.1721904Z             },
2026-06-23T09:38:03.1721995Z             {
2026-06-23T09:38:03.1722120Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-23T09:38:03.1722219Z               "line": 457
2026-06-23T09:38:03.1722308Z             },
2026-06-23T09:38:03.1722408Z             {
2026-06-23T09:38:03.1722538Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-23T09:38:03.1722641Z               "line": 338
2026-06-23T09:38:03.1722737Z             },
2026-06-23T09:38:03.1722824Z             {
2026-06-23T09:38:03.1722942Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1723028Z               "line": 12087
2026-06-23T09:38:03.1723124Z             },
2026-06-23T09:38:03.1723205Z             {
2026-06-23T09:38:03.1723318Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1723410Z               "line": 1352
2026-06-23T09:38:03.1723496Z             },
2026-06-23T09:38:03.1723586Z             {
2026-06-23T09:38:03.1723701Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-23T09:38:03.1723797Z               "line": 130
2026-06-23T09:38:03.1723882Z             }
2026-06-23T09:38:03.1723972Z           ]
2026-06-23T09:38:03.1724069Z         }
2026-06-23T09:38:03.1724153Z       }
2026-06-23T09:38:03.1724244Z     },
2026-06-23T09:38:03.1724330Z     {
2026-06-23T09:38:03.1724431Z       "id": "REQ-UPD-7",
2026-06-23T09:38:03.1726621Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-23T09:38:03.1726748Z       "requiredStages": [
2026-06-23T09:38:03.1726844Z         "impl",
2026-06-23T09:38:03.1726931Z         "unit"
2026-06-23T09:38:03.1727016Z       ],
2026-06-23T09:38:03.1727097Z       "stages": {
2026-06-23T09:38:03.1727193Z         "doc": {
2026-06-23T09:38:03.1727308Z           "complete": false,
2026-06-23T09:38:03.1727397Z           "evidence": []
2026-06-23T09:38:03.1727491Z         },
2026-06-23T09:38:03.1727573Z         "impl": {
2026-06-23T09:38:03.1727676Z           "complete": true,
2026-06-23T09:38:03.1727775Z           "evidence": [
2026-06-23T09:38:03.1727856Z             {
2026-06-23T09:38:03.1727976Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1728066Z               "line": 3276
2026-06-23T09:38:03.1728156Z             }
2026-06-23T09:38:03.1728243Z           ]
2026-06-23T09:38:03.1728329Z         },
2026-06-23T09:38:03.1728428Z         "int": {
2026-06-23T09:38:03.1728596Z           "complete": false,
2026-06-23T09:38:03.1728695Z           "evidence": []
2026-06-23T09:38:03.1728776Z         },
2026-06-23T09:38:03.1728859Z         "unit": {
2026-06-23T09:38:03.1729034Z           "complete": true,
2026-06-23T09:38:03.1729125Z           "evidence": [
2026-06-23T09:38:03.1729207Z             {
2026-06-23T09:38:03.1729459Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1729564Z               "line": 12063
2026-06-23T09:38:03.1729649Z             }
2026-06-23T09:38:03.1729740Z           ]
2026-06-23T09:38:03.1729827Z         }
2026-06-23T09:38:03.1729907Z       }
2026-06-23T09:38:03.1729992Z     },
2026-06-23T09:38:03.1730077Z     {
2026-06-23T09:38:03.1730172Z       "id": "REQ-UPD-8",
2026-06-23T09:38:03.1732651Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-23T09:38:03.1732798Z       "requiredStages": [
2026-06-23T09:38:03.1732882Z         "impl",
2026-06-23T09:38:03.1732958Z         "unit"
2026-06-23T09:38:03.1733050Z       ],
2026-06-23T09:38:03.1733136Z       "stages": {
2026-06-23T09:38:03.1733220Z         "doc": {
2026-06-23T09:38:03.1733322Z           "complete": false,
2026-06-23T09:38:03.1733403Z           "evidence": []
2026-06-23T09:38:03.1733488Z         },
2026-06-23T09:38:03.1733578Z         "impl": {
2026-06-23T09:38:03.1733675Z           "complete": true,
2026-06-23T09:38:03.1733770Z           "evidence": [
2026-06-23T09:38:03.1733855Z             {
2026-06-23T09:38:03.1733989Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1734070Z               "line": 77
2026-06-23T09:38:03.1734170Z             },
2026-06-23T09:38:03.1734256Z             {
2026-06-23T09:38:03.1734385Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1734475Z               "line": 49
2026-06-23T09:38:03.1734561Z             },
2026-06-23T09:38:03.1734648Z             {
2026-06-23T09:38:03.1734756Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1734852Z               "line": 152
2026-06-23T09:38:03.1734939Z             },
2026-06-23T09:38:03.1735024Z             {
2026-06-23T09:38:03.1735147Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1735223Z               "line": 215
2026-06-23T09:38:03.1735313Z             },
2026-06-23T09:38:03.1735388Z             {
2026-06-23T09:38:03.1735510Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1735597Z               "line": 230
2026-06-23T09:38:03.1735689Z             },
2026-06-23T09:38:03.1735773Z             {
2026-06-23T09:38:03.1735902Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1736003Z               "line": 247
2026-06-23T09:38:03.1736088Z             },
2026-06-23T09:38:03.1736184Z             {
2026-06-23T09:38:03.1736298Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1736388Z               "line": 269
2026-06-23T09:38:03.1736484Z             },
2026-06-23T09:38:03.1736566Z             {
2026-06-23T09:38:03.1736680Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1736765Z               "line": 66
2026-06-23T09:38:03.1736857Z             },
2026-06-23T09:38:03.1737056Z             {
2026-06-23T09:38:03.1737181Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1737280Z               "line": 154
2026-06-23T09:38:03.1737370Z             },
2026-06-23T09:38:03.1737453Z             {
2026-06-23T09:38:03.1737558Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1737657Z               "line": 2784
2026-06-23T09:38:03.1737811Z             },
2026-06-23T09:38:03.1737900Z             {
2026-06-23T09:38:03.1738009Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1738090Z               "line": 2847
2026-06-23T09:38:03.1738181Z             },
2026-06-23T09:38:03.1738264Z             {
2026-06-23T09:38:03.1738368Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1738455Z               "line": 2857
2026-06-23T09:38:03.1738546Z             },
2026-06-23T09:38:03.1738631Z             {
2026-06-23T09:38:03.1738741Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1738822Z               "line": 2864
2026-06-23T09:38:03.1738913Z             },
2026-06-23T09:38:03.1739090Z             {
2026-06-23T09:38:03.1739194Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1739279Z               "line": 3277
2026-06-23T09:38:03.1739366Z             },
2026-06-23T09:38:03.1739438Z             {
2026-06-23T09:38:03.1739556Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1739651Z               "line": 572
2026-06-23T09:38:03.1739729Z             },
2026-06-23T09:38:03.1739818Z             {
2026-06-23T09:38:03.1739913Z               "path": "crates/xtask/src/main.rs",
2026-06-23T09:38:03.1740010Z               "line": 586
2026-06-23T09:38:03.1740096Z             }
2026-06-23T09:38:03.1740185Z           ]
2026-06-23T09:38:03.1740272Z         },
2026-06-23T09:38:03.1740349Z         "int": {
2026-06-23T09:38:03.1740448Z           "complete": false,
2026-06-23T09:38:03.1740533Z           "evidence": []
2026-06-23T09:38:03.1740613Z         },
2026-06-23T09:38:03.1740700Z         "unit": {
2026-06-23T09:38:03.1740798Z           "complete": true,
2026-06-23T09:38:03.1740883Z           "evidence": [
2026-06-23T09:38:03.1740969Z             {
2026-06-23T09:38:03.1741094Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-23T09:38:03.1741184Z               "line": 476
2026-06-23T09:38:03.1741264Z             },
2026-06-23T09:38:03.1741351Z             {
2026-06-23T09:38:03.1741479Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-23T09:38:03.1741560Z               "line": 580
2026-06-23T09:38:03.1741652Z             },
2026-06-23T09:38:03.1741732Z             {
2026-06-23T09:38:03.1741841Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1741932Z               "line": 12065
2026-06-23T09:38:03.1742009Z             },
2026-06-23T09:38:03.1742094Z             {
2026-06-23T09:38:03.1742190Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1742276Z               "line": 12087
2026-06-23T09:38:03.1742366Z             }
2026-06-23T09:38:03.1742452Z           ]
2026-06-23T09:38:03.1742552Z         }
2026-06-23T09:38:03.1742634Z       }
2026-06-23T09:38:03.1742724Z     },
2026-06-23T09:38:03.1742809Z     {
2026-06-23T09:38:03.1742906Z       "id": "REQ-UPD-9",
2026-06-23T09:38:03.1745450Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-23T09:38:03.1745678Z       "requiredStages": [
2026-06-23T09:38:03.1745758Z         "doc",
2026-06-23T09:38:03.1745854Z         "impl",
2026-06-23T09:38:03.1745939Z         "unit"
2026-06-23T09:38:03.1746019Z       ],
2026-06-23T09:38:03.1746215Z       "stages": {
2026-06-23T09:38:03.1746300Z         "doc": {
2026-06-23T09:38:03.1746395Z           "complete": true,
2026-06-23T09:38:03.1746492Z           "evidence": [
2026-06-23T09:38:03.1746587Z             {
2026-06-23T09:38:03.1746686Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1746783Z               "line": 93
2026-06-23T09:38:03.1746868Z             },
2026-06-23T09:38:03.1746958Z             {
2026-06-23T09:38:03.1747064Z               "path": "docs/MANIFEST.md",
2026-06-23T09:38:03.1747154Z               "line": 301
2026-06-23T09:38:03.1747231Z             }
2026-06-23T09:38:03.1747315Z           ]
2026-06-23T09:38:03.1747403Z         },
2026-06-23T09:38:03.1747493Z         "impl": {
2026-06-23T09:38:03.1747583Z           "complete": true,
2026-06-23T09:38:03.1747659Z           "evidence": [
2026-06-23T09:38:03.1747751Z             {
2026-06-23T09:38:03.1747893Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1747979Z               "line": 128
2026-06-23T09:38:03.1748071Z             },
2026-06-23T09:38:03.1748155Z             {
2026-06-23T09:38:03.1748279Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1748366Z               "line": 543
2026-06-23T09:38:03.1748456Z             },
2026-06-23T09:38:03.1748545Z             {
2026-06-23T09:38:03.1748669Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1748759Z               "line": 459
2026-06-23T09:38:03.1748843Z             },
2026-06-23T09:38:03.1748929Z             {
2026-06-23T09:38:03.1749163Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1749248Z               "line": 552
2026-06-23T09:38:03.1749340Z             },
2026-06-23T09:38:03.1749430Z             {
2026-06-23T09:38:03.1749558Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1749645Z               "line": 975
2026-06-23T09:38:03.1749740Z             },
2026-06-23T09:38:03.1749844Z             {
2026-06-23T09:38:03.1749959Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-23T09:38:03.1750054Z               "line": 302
2026-06-23T09:38:03.1750140Z             },
2026-06-23T09:38:03.1750221Z             {
2026-06-23T09:38:03.1750318Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1750412Z               "line": 6361
2026-06-23T09:38:03.1750488Z             },
2026-06-23T09:38:03.1750580Z             {
2026-06-23T09:38:03.1750684Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1750764Z               "line": 6496
2026-06-23T09:38:03.1750856Z             },
2026-06-23T09:38:03.1750943Z             {
2026-06-23T09:38:03.1751050Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1751136Z               "line": 6670
2026-06-23T09:38:03.1751222Z             },
2026-06-23T09:38:03.1751312Z             {
2026-06-23T09:38:03.1751415Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1751500Z               "line": 6708
2026-06-23T09:38:03.1751582Z             },
2026-06-23T09:38:03.1751673Z             {
2026-06-23T09:38:03.1751786Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1751872Z               "line": 6731
2026-06-23T09:38:03.1751949Z             },
2026-06-23T09:38:03.1752035Z             {
2026-06-23T09:38:03.1752144Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1752226Z               "line": 6757
2026-06-23T09:38:03.1752316Z             }
2026-06-23T09:38:03.1752411Z           ]
2026-06-23T09:38:03.1752488Z         },
2026-06-23T09:38:03.1752583Z         "int": {
2026-06-23T09:38:03.1752669Z           "complete": false,
2026-06-23T09:38:03.1752880Z           "evidence": []
2026-06-23T09:38:03.1752964Z         },
2026-06-23T09:38:03.1753060Z         "unit": {
2026-06-23T09:38:03.1753156Z           "complete": true,
2026-06-23T09:38:03.1753241Z           "evidence": [
2026-06-23T09:38:03.1753327Z             {
2026-06-23T09:38:03.1753447Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-23T09:38:03.1753636Z               "line": 265
2026-06-23T09:38:03.1753723Z             },
2026-06-23T09:38:03.1753815Z             {
2026-06-23T09:38:03.1753941Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-23T09:38:03.1754026Z               "line": 667
2026-06-23T09:38:03.1754107Z             },
2026-06-23T09:38:03.1754194Z             {
2026-06-23T09:38:03.1754317Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-23T09:38:03.1754408Z               "line": 1154
2026-06-23T09:38:03.1754495Z             },
2026-06-23T09:38:03.1754580Z             {
2026-06-23T09:38:03.1754689Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1754790Z               "line": 8942
2026-06-23T09:38:03.1754871Z             }
2026-06-23T09:38:03.1754961Z           ]
2026-06-23T09:38:03.1755047Z         }
2026-06-23T09:38:03.1755138Z       }
2026-06-23T09:38:03.1755233Z     },
2026-06-23T09:38:03.1755314Z     {
2026-06-23T09:38:03.1755429Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-23T09:38:03.1760767Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-23T09:38:03.1761101Z       "requiredStages": [
2026-06-23T09:38:03.1761202Z         "doc",
2026-06-23T09:38:03.1761300Z         "impl",
2026-06-23T09:38:03.1761527Z         "unit",
2026-06-23T09:38:03.1761615Z         "int"
2026-06-23T09:38:03.1761706Z       ],
2026-06-23T09:38:03.1761801Z       "stages": {
2026-06-23T09:38:03.1761895Z         "doc": {
2026-06-23T09:38:03.1762008Z           "complete": true,
2026-06-23T09:38:03.1762099Z           "evidence": [
2026-06-23T09:38:03.1762190Z             {
2026-06-23T09:38:03.1762289Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1762379Z               "line": 355
2026-06-23T09:38:03.1762472Z             }
2026-06-23T09:38:03.1762557Z           ]
2026-06-23T09:38:03.1762642Z         },
2026-06-23T09:38:03.1762728Z         "impl": {
2026-06-23T09:38:03.1762838Z           "complete": true,
2026-06-23T09:38:03.1762924Z           "evidence": [
2026-06-23T09:38:03.1763009Z             {
2026-06-23T09:38:03.1763130Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-23T09:38:03.1763219Z               "line": 432
2026-06-23T09:38:03.1763310Z             },
2026-06-23T09:38:03.1763396Z             {
2026-06-23T09:38:03.1763524Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.1763615Z               "line": 683
2026-06-23T09:38:03.1763706Z             },
2026-06-23T09:38:03.1763797Z             {
2026-06-23T09:38:03.1763911Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.1764002Z               "line": 859
2026-06-23T09:38:03.1764084Z             },
2026-06-23T09:38:03.1764163Z             {
2026-06-23T09:38:03.1764283Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1764365Z               "line": 701
2026-06-23T09:38:03.1764459Z             },
2026-06-23T09:38:03.1764549Z             {
2026-06-23T09:38:03.1764668Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:03.1764750Z               "line": 824
2026-06-23T09:38:03.1764839Z             }
2026-06-23T09:38:03.1764925Z           ]
2026-06-23T09:38:03.1765011Z         },
2026-06-23T09:38:03.1765097Z         "int": {
2026-06-23T09:38:03.1765182Z           "complete": true,
2026-06-23T09:38:03.1765273Z           "evidence": [
2026-06-23T09:38:03.1765360Z             {
2026-06-23T09:38:03.1765516Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-23T09:38:03.1765612Z               "line": 2167
2026-06-23T09:38:03.1765684Z             }
2026-06-23T09:38:03.1765779Z           ]
2026-06-23T09:38:03.1765864Z         },
2026-06-23T09:38:03.1765956Z         "unit": {
2026-06-23T09:38:03.1766046Z           "complete": true,
2026-06-23T09:38:03.1766141Z           "evidence": [
2026-06-23T09:38:03.1766232Z             {
2026-06-23T09:38:03.1766347Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.1766446Z               "line": 1476
2026-06-23T09:38:03.1766532Z             },
2026-06-23T09:38:03.1766620Z             {
2026-06-23T09:38:03.1766732Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-23T09:38:03.1766827Z               "line": 1633
2026-06-23T09:38:03.1766912Z             },
2026-06-23T09:38:03.1766993Z             {
2026-06-23T09:38:03.1767115Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1767206Z               "line": 2530
2026-06-23T09:38:03.1767292Z             },
2026-06-23T09:38:03.1767378Z             {
2026-06-23T09:38:03.1767496Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-23T09:38:03.1767597Z               "line": 2597
2026-06-23T09:38:03.1767683Z             },
2026-06-23T09:38:03.1767773Z             {
2026-06-23T09:38:03.1767889Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-23T09:38:03.1767984Z               "line": 1038
2026-06-23T09:38:03.1768150Z             }
2026-06-23T09:38:03.1768227Z           ]
2026-06-23T09:38:03.1768317Z         }
2026-06-23T09:38:03.1768403Z       }
2026-06-23T09:38:03.1768484Z     },
2026-06-23T09:38:03.1768570Z     {
2026-06-23T09:38:03.1768660Z       "id": "REQ-WHOAMI-1",
2026-06-23T09:38:03.1770378Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-23T09:38:03.1770593Z       "requiredStages": [
2026-06-23T09:38:03.1770678Z         "doc",
2026-06-23T09:38:03.1774272Z         "impl",
2026-06-23T09:38:03.1774394Z         "unit"
2026-06-23T09:38:03.1774519Z       ],
2026-06-23T09:38:03.1774610Z       "stages": {
2026-06-23T09:38:03.1774705Z         "doc": {
2026-06-23T09:38:03.1774809Z           "complete": true,
2026-06-23T09:38:03.1774911Z           "evidence": [
2026-06-23T09:38:03.1775001Z             {
2026-06-23T09:38:03.1775104Z               "path": "CONTEXT.md",
2026-06-23T09:38:03.1775204Z               "line": 728
2026-06-23T09:38:03.1775300Z             }
2026-06-23T09:38:03.1775381Z           ]
2026-06-23T09:38:03.1775471Z         },
2026-06-23T09:38:03.1775552Z         "impl": {
2026-06-23T09:38:03.1775643Z           "complete": true,
2026-06-23T09:38:03.1775733Z           "evidence": [
2026-06-23T09:38:03.1775814Z             {
2026-06-23T09:38:03.1775934Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1776029Z               "line": 3845
2026-06-23T09:38:03.1776115Z             },
2026-06-23T09:38:03.1776206Z             {
2026-06-23T09:38:03.1776315Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1776415Z               "line": 3873
2026-06-23T09:38:03.1776506Z             }
2026-06-23T09:38:03.1776592Z           ]
2026-06-23T09:38:03.1776668Z         },
2026-06-23T09:38:03.1776759Z         "int": {
2026-06-23T09:38:03.1776860Z           "complete": false,
2026-06-23T09:38:03.1776949Z           "evidence": []
2026-06-23T09:38:03.1777030Z         },
2026-06-23T09:38:03.1777131Z         "unit": {
2026-06-23T09:38:03.1777227Z           "complete": true,
2026-06-23T09:38:03.1777316Z           "evidence": [
2026-06-23T09:38:03.1777401Z             {
2026-06-23T09:38:03.1777511Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1777600Z               "line": 9224
2026-06-23T09:38:03.1777685Z             },
2026-06-23T09:38:03.1777771Z             {
2026-06-23T09:38:03.1777877Z               "path": "crates/spt/src/cli.rs",
2026-06-23T09:38:03.1777957Z               "line": 9277
2026-06-23T09:38:03.1778047Z             }
2026-06-23T09:38:03.1778134Z           ]
2026-06-23T09:38:03.1778220Z         }
2026-06-23T09:38:03.1778319Z       }
2026-06-23T09:38:03.1778395Z     }
2026-06-23T09:38:03.1778482Z   ],
2026-06-23T09:38:03.1778582Z   "findings": []
2026-06-23T09:38:03.1778667Z }
